元素不会保持居中,尤其是在调整屏幕大小时

2023-11-25

我的问题是我无法水平居中三角形指针。

好吧,对于某些窗口大小,我可以将指针居中,但是当我缩小或扩展窗口时,它会再次将其放置在错误的位置。

我缺少什么?

body {
  background: #333333;
}
.container {
  width: 98%;
  height: 80px;
  line-height: 80px;
  position: relative;
  top: 20px;
  min-width: 250px;
  margin-top: 50px;
}
.container-decor {
  border: 4px solid #C2E1F5;
  color: #fff;
  font-family: times;
  font-size: 1.1em;
  background: #88B7D5;
  text-align: justify;
}
.container:before {
  top: -33px;
  left: 48%;
  transform: rotate(45deg);
  position: absolute;
  border: solid #C2E1F5;
  border-width: 4px 0 0 4px;
  background: #88B7D5;
  content: '';
  width: 56px;
  height: 56px;
}
<div class="container container-decor">great distance</div>

你的箭头以left:48%。这将定位箭头靠近中心基于箭头元素左边缘的容器。

换句话说,假设您使用left:50%(这是正确的方法),这doesn't将箭头元素置于容器的中心。它实际上集中在左边缘容器中的元素。

在下图中,标记位于页面中央,使用text-align:center.

为了进行比较,请参阅以left:50%.

enter image description here

该元素位于右中位置。随着窗口变小,这种错位变得更加明显。

因此,经常会看到居中、绝对定位的元素使用transform财产:

.triangle {
   position: absolute;
   left: 50%;
   transform: translate(-50%,0);
}

The transform规则告诉三角形将自身向后移动其宽度的 50%。这使得它完全居中于该线上。现在它模拟text-align:center.

enter image description here

In translate(-50%,0),第一个值针对 x 轴(水平),另一个值适用于 y 轴。等效的规则是transform:translateX(-50%)(还有transform:translateY()).

顺便说一句,以下是如何将元素水平居中和居中 垂直使用此方法:

.triangle {
   position: absolute;
   left: 50%;
   top: 50%;
   transform: translate(-50%,-50%);
}

注意:如果您使用的是right: 50% or bottom: 50%, 各自的translate值将是50%(非负数).

然而,在这个特定问题中,出现了一个问题,因为transform:rotate(45deg)也在声明块中。添加第二个transform意味着第一个被忽略(每个级联)。

因此,作为解决方案,请尝试以下操作:

.container::before {
    left: 50%;
    transform: translate(-50%,0) rotate(45deg);
}

通过将函数链接在一起,可以应用多个函数。

请注意顺序很重要。如果translate and rotate颠倒过来,三角形会先旋转 45 度,然后平移 -50%沿着旋转轴,打破布局。所以请确保translate首先。 (谢谢@Oriol在评论中指出这一点。)

这是完整的代码:

body {
    background: #333333;
}

.container {
    width: 98%;
    height: 80px;
    line-height: 80px;
    position: relative;
    top: 20px;
    min-width: 250px;
    margin-top: 50px;
}

.container-decor {
    border: 4px solid #C2E1F5;
    color: #fff;
    font-family: times;
    font-size: 1.1em;
    background: #88B7D5;
    text-align: justify;
}

.container::before {
    top: -33px;
    left: 50%;
    transform: translate(-50%,0) rotate(45deg);
    position: absolute;
    border: solid #C2E1F5;
    border-width: 4px 0 0 4px;
    background: #88B7D5;
    content: '';
    width: 56px;
    height: 56px;
}
<div class="container container-decor">great distance</div>

jsFiddle

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

元素不会保持居中,尤其是在调整屏幕大小时 的相关文章

随机推荐

  • PDFsharp 水印

    我正在制作一个应用程序 在用户选择的 PDF 上创建水印 但我似乎无法让水印出现在所选 PDF 上 但也没有收到任何错误 任何帮助 将不胜感激 我使用的是 PDFsharp 版本 1 50 4000 public void WaterMar
  • 是否可以从不同的 JVM 调用 Java 应用程序中的方法?

    当我第一次使用 Apache 守护程序为 Windows 开发 Java 服务时 我使用了JVM我非常喜欢的模式 您指定您的类和启动 停止 静态 方法 但对于 Linux Jsvc 看起来并没有相同的选项 我真的很想知道为什么 无论如何 如
  • AVPlayer 中的 SeekToTime 在前进时停止播放流音频

    我使用 AVPlayer 流式传输音频 它运作良好 但现在我需要制作一个滑块来向前和向后移动音频 就像典型的音乐播放器一样 我使用了该功能seekToTime这与本地音频文件配合得很好 但是 当我从 Web url 流式传输歌曲时 当我将滑
  • 如何更改 ASP.NET 图表控件的背景颜色?

    渲染图表控件时 图像的背景颜色为白色 我怎样才能使它成为另一种颜色 或透明 我指的区域是黑色边框和图表背景之间的白色区域 尝试这个
  • 可以将未命名的结构设为静态吗?

    您可以将未命名的结构设为类的静态成员吗 struct Foo struct namedStruct int memb1 memb2 static namedStruct namedStructObj struct int memb1 mem
  • 如何在按角度单击按钮时将列表滚动到顶部?

    您能告诉我如何在按角度单击按钮时将列表滚动到顶部吗 我试过这样 scrollToTop el el scrollIntoView
  • 在 C++ 中获取环 0 模式 (Windows)

    如何在 Windows 7 或 Vista 中为我的进程获取 Ring 0 操作模式 允许任意代码在环 0 中运行违反了基本的操作系统安全原则 只有OS内核和设备驱动程序运行在ring 0中 如果要编写ring 0代码 请编写Windows
  • 计算 R 中唯一的分类变量对[重复]

    这个问题在这里已经有答案了 如果我有这个数据 One lt c rep X 4 rep Y 3 rep Z 2 Two lt c rep A 2 rep B 6 rep C 1 df lt data frame One Two One Tw
  • 将策略定义与执行分离时了解 Polly 策略的语义

    With Polly我希望在两个不同的语句中定义我的策略并执行该策略 如下所示 Policy definition var policy Policy HandleResult
  • 解决 paramiko 上的线程清理问题

    我有一个使用 paramiko 的自动化流程 但出现以下错误 Exception in thread Thread 1 most likely raised during interpreter shutdown
  • 如何对单元格的元素进行排序?

    我有一个像这样的细胞 A 1 1 1 2 3 A 2 1 4 2 A 3 1 3 2 5 4 6 A N 1 10 2 5 7 N is very large 换句话说 这个单元格的每个元素的列数是不同的 没有明确的模式 现在 我想根据位于
  • 如何在有向图中找到最小顶点集,以便可以到达所有其他顶点

    给定一个有向图 我需要找到可以到达所有其他顶点的最小顶点集 因此 该函数的结果应该是最小数量的顶点 从该顶点可以通过有向边到达所有其他顶点 可能的最大结果是如果没有边 则将返回所有节点 如果图中存在循环 则对于每个循环 选择一个节点 哪一个
  • 撇号被翻译为“tm”。哪个 PHP 函数会将其显示为 '?某物_解码?

    我正在抓取一些推文并将其打印在我的网站上 并且大写撇号被呈现为 tm 不是很好 我应该通过哪个 php 函数运行字符串才能让这些奇怪的字符显示为更接近 我在 Chrome 中遇到了这个问题 添加一个 到 头部 部分修复它
  • 正确的 C 预处理器宏无操作

    对于调试日志记录 我经常看到并使用类似的东西 ifdef DEBUG define DLOG fmt args printf s d fmt FILE LINE args else define DLOG fmt args endif 但在
  • Xamarin 中与分辨率相关的字体大小

    我是 Xamarin 新手 正在为我的第一个应用程序而苦苦挣扎 我有一张图像 上面有一个入口视图 这样我就创建了一个自定义条目背景 不过 条目的字体大小不会随着具有不同分辨率的不同设备而缩放 当我调整设备 A 的字体大小并现在在设备 B 上
  • 如何使用用户定义的类对象作为networkx节点?

    类点定义为 其中还有一些方法 属性和东西 但这只是最小的部分 class point def init self x y self x x self y y 于是 我看到了这个问题 但是当我尝试应用它时 它返回一个错误 G nx Graph
  • Oracle SQL 插入多行并返回一些内容

    在 Oracle 中 可以通过执行如下查询来插入多行 INSERT ALL INTO mytable column1 column2 column3 VALUES val1 1 val1 2 val1 3 INTO mytable colu
  • 使用 Hibernate PreInsertEventListener 更改实体

    我正在使用 Hibernate 4 1 尝试调用 PreInsertEventListener 来更新实体 然后再将其插入数据库 基于此处的文章 http anshuiitk blogspot ca 2010 11 hibernate pr
  • 如何在两个HTML页面之间交换变量?

    我有两个 HTML 页面 example1 html and example2 html 我如何传递变量example1 html to example2 html使用查询字符串 并检索该变量example2 html不使用任何服务器端代码
  • 元素不会保持居中,尤其是在调整屏幕大小时

    我的问题是我无法水平居中三角形指针 好吧 对于某些窗口大小 我可以将指针居中 但是当我缩小或扩展窗口时 它会再次将其放置在错误的位置 我缺少什么 body background 333333 container width 98 heigh