translateY(-50%) 模糊子元素
translateY(-50%) blurring child elements
出于某种原因,我的垂直对齐代码模糊了 Chrome 和 Safari 中的部分但不是所有子元素。
造成它的原因是 translateY(-50%),如果我删除它,那么模糊就会消失,但是垂直居中效果会丢失。
/* @group Center all the things */
.center-wrapper {
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
}
.center-wrapper .center {
position: relative;
overflow: hidden;
top: 50%;
-webkit-transform: translateY(-50%);
-ms-transform: translateY(-50%);
transform: translateY(-50%);
/* This fixes the blurred buttons but breaks centering
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
transform: translateZ(0);*/
}
/* @end */
经过尝试和测试的方法(例如下面的方法)有效,但它们破坏了垂直居中:
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
transform: translateZ(0);
据我所知,解决这个模糊问题的唯一方法是更改垂直对齐方式并改用 display: table
。这是我的做法:
1) 保持 HTML 标记相同
<div class="center-wrapper">
<div class="center">
<p>Centered content here</p>
</div>
</div>
2) 将 CSS 更改为以下内容:
/* @group Center all the things */
.center-wrapper {
min-height: 100%;
padding: 0;
display: table;
width: 100%;
}
.center-wrapper .center {
display: table-cell;
vertical-align: middle;
}
/* @end */
尝试将按钮放置在中间时遇到同样的问题,但按钮出现在父元素悬停时,每次里面的文本都被随机剪切。
解决方法是:
.positioned-button {
transform: translateY(-50%) scale(1);
filter: blur(0);
line-height: 1;
}
没有损坏,修复了 Chrome :)
您可以在此处查看正在运行的显示 table。
.center-wrapper {
min-height: 200px;
padding: 0;
display: table;
width: 100%;
background: black;
}
.center-wrapper .center {
display: table-cell;
vertical-align: middle;
color: white;
}
.center-wrapper .center div {
height: 40px;
background: red;
width: 50%;
margin: 0 auto;
}
<div class="center-wrapper">
<div class="center">
<div>Centered content here</div>
</div>
</div>
出于某种原因,我的垂直对齐代码模糊了 Chrome 和 Safari 中的部分但不是所有子元素。
造成它的原因是 translateY(-50%),如果我删除它,那么模糊就会消失,但是垂直居中效果会丢失。
/* @group Center all the things */
.center-wrapper {
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
}
.center-wrapper .center {
position: relative;
overflow: hidden;
top: 50%;
-webkit-transform: translateY(-50%);
-ms-transform: translateY(-50%);
transform: translateY(-50%);
/* This fixes the blurred buttons but breaks centering
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
transform: translateZ(0);*/
}
/* @end */
经过尝试和测试的方法(例如下面的方法)有效,但它们破坏了垂直居中:
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
transform: translateZ(0);
据我所知,解决这个模糊问题的唯一方法是更改垂直对齐方式并改用 display: table
。这是我的做法:
1) 保持 HTML 标记相同
<div class="center-wrapper">
<div class="center">
<p>Centered content here</p>
</div>
</div>
2) 将 CSS 更改为以下内容:
/* @group Center all the things */
.center-wrapper {
min-height: 100%;
padding: 0;
display: table;
width: 100%;
}
.center-wrapper .center {
display: table-cell;
vertical-align: middle;
}
/* @end */
尝试将按钮放置在中间时遇到同样的问题,但按钮出现在父元素悬停时,每次里面的文本都被随机剪切。
解决方法是:
.positioned-button {
transform: translateY(-50%) scale(1);
filter: blur(0);
line-height: 1;
}
没有损坏,修复了 Chrome :)
您可以在此处查看正在运行的显示 table。
.center-wrapper {
min-height: 200px;
padding: 0;
display: table;
width: 100%;
background: black;
}
.center-wrapper .center {
display: table-cell;
vertical-align: middle;
color: white;
}
.center-wrapper .center div {
height: 40px;
background: red;
width: 50%;
margin: 0 auto;
}
<div class="center-wrapper">
<div class="center">
<div>Centered content here</div>
</div>
</div>