【问题标题】:translateY(-50%) blurring child elementstranslateY(-50%) 模糊子元素
【发布时间】:2023-03-09 08:16:01
【问题描述】:

由于某种原因,我的垂直对齐代码模糊了 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);

【问题讨论】:

  • 您应该使用transform: translateY(-50%) translateZ(0); 组合您的转换或将此translateZ 应用到您的容器。

标签: html css alignment css-transforms


【解决方案1】:

在尝试将按钮放置在中间时遇到了同样的问题,但是按钮出现在父元素的悬停上,并且每次里面的文本被随机剪切。

解决办法是:

.positioned-button {
   transform: translateY(-50%) scale(1);
   filter: blur(0);
   line-height: 1;
}

什么都不破坏,修复 Chrome :)

【讨论】:

  • 我一直在寻找几个小时和“line-height: 1;”是什么最终解决了这个问题。你现在是我的英雄之一。非常感谢
【解决方案2】:

据我所知,解决这个模糊问题的唯一方法是更改​​垂直对齐方法并改用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 */

【讨论】:

    【解决方案3】:

    您可以在此处查看正在运行的显示表。

    .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>

    【讨论】:

      猜你喜欢
      • 2017-03-30
      • 1970-01-01
      • 2021-06-03
      • 1970-01-01
      • 2022-10-17
      • 2015-05-12
      • 2010-11-18
      • 1970-01-01
      相关资源
      最近更新 更多