在 Safari 上,如果祖先有 'display: flex' 和后代,"位置:粘性",它只会粘在其包装器的高度



如所述,但这里没有回答:position: -webkit-sticky只工作到Safari(12.1.1)中flexbox子容器的高度

这是一个持续的问题,很容易复制:https://jsfiddle.net/4ea9mdkn/

.flexbox-wrapper {
display: flex;
}
.overflow-box {
background-color: blue;
height: 200px;
overflow: auto;
}
.sticky {
position: sticky;
top: 0;
background-color: red;
}
<div class="flexbox-wrapper">
<div class="content-wrapper">
<div class="overflow-box">
This is the regular box

<div class="sticky">
This is the sticky box
</div>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Corporis accusamus iure voluptatum, repellat illum excepturi saepe quam neque incidunt eius rerum voluptatem accusantium doloribus voluptas obcaecati nemo assumenda. Culpa, suscipit.</p>

<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Corporis accusamus iure voluptatum, repellat illum excepturi saepe quam neque incidunt eius rerum voluptatem accusantium doloribus voluptas obcaecati nemo assumenda. Culpa, suscipit.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Corporis accusamus iure voluptatum, repellat illum excepturi saepe quam neque incidunt eius rerum voluptatem accusantium doloribus voluptas obcaecati nemo assumenda. Culpa, suscipit.</p>

<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Corporis accusamus iure voluptatum, repellat illum excepturi saepe quam neque incidunt eius rerum voluptatem accusantium doloribus voluptas obcaecati nemo assumenda. Culpa, suscipit.</p>

<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Corporis accusamus iure voluptatum, repellat illum excepturi saepe quam neque incidunt eius rerum voluptatem accusantium doloribus voluptas obcaecati nemo assumenda. Culpa, suscipit.</p>

<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Corporis accusamus iure voluptatum, repellat illum excepturi saepe quam neque incidunt eius rerum voluptatem accusantium doloribus voluptas obcaecati nemo assumenda. Culpa, suscipit.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Corporis accusamus iure voluptatum, repellat illum excepturi saepe quam neque incidunt eius rerum voluptatem accusantium doloribus voluptas obcaecati nemo assumenda. Culpa, suscipit.</p>

<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Corporis accusamus iure voluptatum, repellat illum excepturi saepe quam neque incidunt eius rerum voluptatem accusantium doloribus voluptas obcaecati nemo assumenda. Culpa, suscipit.</p>


<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Corporis accusamus iure voluptatum, repellat illum excepturi saepe quam neque incidunt eius rerum voluptatem accusantium doloribus voluptas obcaecati nemo assumenda. Culpa, suscipit.</p>

<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Corporis accusamus iure voluptatum, repellat illum excepturi saepe quam neque incidunt eius rerum voluptatem accusantium doloribus voluptas obcaecati nemo assumenda. Culpa, suscipit.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Corporis accusamus iure voluptatum, repellat illum excepturi saepe quam neque incidunt eius rerum voluptatem accusantium doloribus voluptas obcaecati nemo assumenda. Culpa, suscipit.</p>

<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Corporis accusamus iure voluptatum, repellat illum excepturi saepe quam neque incidunt eius rerum voluptatem accusantium doloribus voluptas obcaecati nemo assumenda. Culpa, suscipit.</p>
</div>

</div>
</div>

有人知道修复这个吗?

据我所知,Safari还不支持粘贴。所以你必须用绝对位置。这是我对你的css所做的,我希望它能工作。

*{
margin: 0;
padding: 0;
}
.flexbox-wrapper {
display: flex;
width: 100%;
}
.regular {
width: 100%;
background-color: blue;
height: 200px;
overflow: auto;
padding: 10px;
padding-top: 25px;
}
.sticky {
width: 100%;
-webkit-transform: translateZ(0);
position: fixed;
top: 0;
left: 0;
background-color: red;
}

我找到了这个解决方案。我在Safari上试过,它正在工作。我发现我们不应该把任何其他元素放在sticky和它的父元素之间。此外,我们不应该在父元素中隐藏overflow:。下面是代码

.flexbox-wrapper {
display: flex;
overflow: auto;
}
.regular {
background-color: blue;
height: 200px;
overflow-y: auto;
}
.sticky {
position: sticky;
top: 0;
background-color: red;
}
<div class="flexbox-wrapper">
<div class="mouse">
<div class="sticky">
This is the sticky box
</div>
<div class="regular">
This is the regular box


<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Corporis accusamus iure voluptatum, repellat illum excepturi saepe quam neque incidunt eius rerum voluptatem accusantium doloribus voluptas obcaecati nemo assumenda. Culpa, suscipit.</p>

<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Corporis accusamus iure voluptatum, repellat illum excepturi saepe quam neque incidunt eius rerum voluptatem accusantium doloribus voluptas obcaecati nemo assumenda. Culpa, suscipit.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Corporis accusamus iure voluptatum, repellat illum excepturi saepe quam neque incidunt eius rerum voluptatem accusantium doloribus voluptas obcaecati nemo assumenda. Culpa, suscipit.</p>

<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Corporis accusamus iure voluptatum, repellat illum excepturi saepe quam neque incidunt eius rerum voluptatem accusantium doloribus voluptas obcaecati nemo assumenda. Culpa, suscipit.</p>

<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Corporis accusamus iure voluptatum, repellat illum excepturi saepe quam neque incidunt eius rerum voluptatem accusantium doloribus voluptas obcaecati nemo assumenda. Culpa, suscipit.</p>

<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Corporis accusamus iure voluptatum, repellat illum excepturi saepe quam neque incidunt eius rerum voluptatem accusantium doloribus voluptas obcaecati nemo assumenda. Culpa, suscipit.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Corporis accusamus iure voluptatum, repellat illum excepturi saepe quam neque incidunt eius rerum voluptatem accusantium doloribus voluptas obcaecati nemo assumenda. Culpa, suscipit.</p>

<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Corporis accusamus iure voluptatum, repellat illum excepturi saepe quam neque incidunt eius rerum voluptatem accusantium doloribus voluptas obcaecati nemo assumenda. Culpa, suscipit.</p>


<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Corporis accusamus iure voluptatum, repellat illum excepturi saepe quam neque incidunt eius rerum voluptatem accusantium doloribus voluptas obcaecati nemo assumenda. Culpa, suscipit.</p>

<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Corporis accusamus iure voluptatum, repellat illum excepturi saepe quam neque incidunt eius rerum voluptatem accusantium doloribus voluptas obcaecati nemo assumenda. Culpa, suscipit.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Corporis accusamus iure voluptatum, repellat illum excepturi saepe quam neque incidunt eius rerum voluptatem accusantium doloribus voluptas obcaecati nemo assumenda. Culpa, suscipit.</p>

<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Corporis accusamus iure voluptatum, repellat illum excepturi saepe quam neque incidunt eius rerum voluptatem accusantium doloribus voluptas obcaecati nemo assumenda. Culpa, suscipit.</p>
</div>

</div>
</div>

相关内容

  • 没有找到相关文章

最新更新