使用 ::before pseudo 显示 flex 在 Safari 上不起作用
Display flex with ::before pseudo not working on Safari
在伪元素上使用 display flex 似乎在 Safari 上不起作用。在 Chrome 这确实有效。有谁知道 Safari 的修复程序。或者碰巧知道为什么这在 Safari 上不起作用?
我正在使用详细信息摘要 HTML 元素将其用作手风琴。
chrome (V94) 上的输出:
在 Safari (V14.1) 上输出
我的css/scss代码:
.product-metafield{
summary{
display: -webkit-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
flex-direction: row-reverse;
justify-content: flex-end;
gap: 10px;
&::-webkit-details-marker{
display: none;
}
}
summary::before{
font-size: 23px;
line-height: 25px;
content: "[=10=]2B"; // Plus
}
details[open] summary::before{
font-size: 23px;
line-height: 25px;
content: "12"; // Minus
}
}
HTML 片段 (Liquid/Shopify)
<div class="product-size-guide product-metafield">
<details>
<summary>
<p class="product-metafield-title">Size guide</p>
</summary>
<div class="size-guide-content">
<img src="{{product.metafields.my_fields.size_guide | img_url: '500x'}}"
alt="Size guide" id="sizeGuideContent">
</div>
</details>
</div>
刚刚用于我在 summary::before
上的用例 position: absolute;
并用 margin-left: 20px;
将段落移到了右边
找到相同的问题 ,答案为
Certain HTML elements, like <summary>
, <fieldset>
and <button>
, do not work as flex containers. The browser's default rendering of those elements UI conflicts with the display: flex declaration.
更新后的代码:
.product-metafield{
summary{
&::-webkit-details-marker{
display: none;
}
}
summary::before{
position: absolute;
font-size: 23px;
line-height: 25px;
content: "[=10=]2B"; // Plus
}
details[open] summary::before{
font-size: 23px;
line-height: 25px;
content: "12"; // Minus
}
}
.product-metafield-title{
margin-left: 20px;
}
HTML 片段 (Liquid/Shopify)
<div class="product-size-guide product-metafield">
<details>
<summary>
<p class="product-metafield-title">Size guide</p>
</summary>
<div class="size-guide-content">
<img src="{{product.metafields.my_fields.size_guide | img_url: '500x'}}"
alt="Size guide" id="sizeGuideContent">
</div>
</details>
</div>
在伪元素上使用 display flex 似乎在 Safari 上不起作用。在 Chrome 这确实有效。有谁知道 Safari 的修复程序。或者碰巧知道为什么这在 Safari 上不起作用?
我正在使用详细信息摘要 HTML 元素将其用作手风琴。
chrome (V94) 上的输出:
在 Safari (V14.1) 上输出
我的css/scss代码:
.product-metafield{
summary{
display: -webkit-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
flex-direction: row-reverse;
justify-content: flex-end;
gap: 10px;
&::-webkit-details-marker{
display: none;
}
}
summary::before{
font-size: 23px;
line-height: 25px;
content: "[=10=]2B"; // Plus
}
details[open] summary::before{
font-size: 23px;
line-height: 25px;
content: "12"; // Minus
}
}
HTML 片段 (Liquid/Shopify)
<div class="product-size-guide product-metafield">
<details>
<summary>
<p class="product-metafield-title">Size guide</p>
</summary>
<div class="size-guide-content">
<img src="{{product.metafields.my_fields.size_guide | img_url: '500x'}}"
alt="Size guide" id="sizeGuideContent">
</div>
</details>
</div>
刚刚用于我在 summary::before
上的用例 position: absolute;
并用 margin-left: 20px;
找到相同的问题
Certain HTML elements, like
<summary>
,<fieldset>
and<button>
, do not work as flex containers. The browser's default rendering of those elements UI conflicts with the display: flex declaration.
更新后的代码:
.product-metafield{
summary{
&::-webkit-details-marker{
display: none;
}
}
summary::before{
position: absolute;
font-size: 23px;
line-height: 25px;
content: "[=10=]2B"; // Plus
}
details[open] summary::before{
font-size: 23px;
line-height: 25px;
content: "12"; // Minus
}
}
.product-metafield-title{
margin-left: 20px;
}
HTML 片段 (Liquid/Shopify)
<div class="product-size-guide product-metafield">
<details>
<summary>
<p class="product-metafield-title">Size guide</p>
</summary>
<div class="size-guide-content">
<img src="{{product.metafields.my_fields.size_guide | img_url: '500x'}}"
alt="Size guide" id="sizeGuideContent">
</div>
</details>
</div>