首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >css属性将更改未定义的行为。

css属性将更改未定义的行为。
EN

Stack Overflow用户
提问于 2016-09-29 06:39:36
回答 1查看 143关注 0票数 1

我正在使用语义-ui,并设法缩小了css属性will-change中的一些未定义行为(我在他们的模型中找到了这种行为):

代码语言:javascript
复制
.outer{
  background-color: black;
  position: absolute;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
}
.inner{
  position:absolute;
  background-color: white;
  left: 50%;
  top: 100px;
  width: 400px;
  margin-left: -200px;
  height: 100px;
  padding: 5px;
  /**
   * comment out the line below
   * to see the desired/different result
   **/
  will-change: transform;
}
.baby{
  color: yellow;
  position: fixed;
  left: 20px;
  top: 20px;
  right: 0;
  border: 1px solid red;
}
代码语言:javascript
复制
<div class="outer">
  <div class="inner">
    <div class="baby">here</div>
    <div class="content">some content</div>
  </div>
</div>

我只在铬中测试过这个。有人有更多关于这里发生的事情的信息吗?为什么will-change会对实际布局做任何事情?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-29 08:25:25

will-change影响布局,因为它经常与属性一起使用,其值可以在不影响布局的属性和不影响布局的属性之间进行更改。设置will-change会告诉浏览器为这种潜在的更改做好准备,这将导致浏览器预先应用布局更改。

这个不是未定义的行为

如果属性的任何非初始值都会在元素上创建一个堆叠上下文,则指定将更改中的属性必须在元素上创建一个堆叠上下文。 如果属性的任何非初始值会导致元素为绝对定位的元素生成包含块,则指定将更改中的属性必须导致元素为绝对定位的元素生成包含块。 如果属性的任何非初始值会导致元素为固定定位元素生成包含块,则指定将更改中的属性必须导致元素为固定定位元素生成包含块。 如果属性的任何非初始值会导致元素上的呈现差异(例如对文本使用不同的反混叠策略),则用户代理应该在属性在“意志更改”中指定时使用该替代呈现,以避免在属性最终更改时突然呈现差异。 例如,将不透明度设置为除1以外的任何值都会在元素上创建一个堆叠上下文。因此,设置将改变:不透明度也会创建一个堆叠上下文,即使当前不透明度仍然等于1。

在您的示例中,由于转换会导致堆栈上下文和包含块的创建,因此设置will-change: transform也将导致创建堆叠上下文和包含块,因为您向浏览器建议元素可能现在或以后进行转换,并且当它进行转换时,布局将受到影响。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39763121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档