如果 p 元素没有 ul,如何应用 CSS 样式 [重复]

Posted

技术标签:

【中文标题】如果 p 元素没有 ul,如何应用 CSS 样式 [重复]【英文标题】:How to apply CSS style if the p element does not have a ul [duplicate] 【发布时间】:2020-04-26 07:07:09 【问题描述】:

我想将page-break-inside:avoid 属性应用于所有没有ul 元素的p 元素。

p 
    margin-top: 4pt !important;
    margin-bottom:6pt !important;
    page-break-inside:avoid;
    orphans: 4;
    widows: 2;
<p>Hello text </p>
   <p>hello <ul>
    <li>list </li>
   </ul>

我想排除第二段。可以通过 CSS 实现吗?我正在寻找一个 CSS 解决方案。

【问题讨论】:

不,不能排除带有ul 元素的p 元素。 半无关紧要,因为 p 标签不能包含 ul 标签。无效的 html 任何体面的浏览器都会将其呈现为 &lt;p&gt;...&lt;/p&gt;&lt;p&gt;...&lt;/p&gt;&lt;ul&gt;... p 元素不能包含ul 谢谢。我主要用它来打印,没有显示错误。很好的一课。顺便说一句,总的来说,我确实搜索了很多天。 【参考方案1】:

您不能在p 元素中使用ul。至于标识符主题,唯一的选择是使用:has 伪类,但它是still not compatible。

您可以查看其文档here。

修改代码以改进结构。

你可以这样做:

<p>First paragraph</p>
<p>Second paragraph</p>
<ul>
   <li>Element 1</li>
   <li>Element 2</li>
</ul>
<p>Third paragraph</p>
<p>Fourth paragraph</p>

这样,如果您想影响紧跟在p 之后的ul,您可以使用这个选择器:

p ~ ul 
   color: red;

//Selects every <ul> element that are preceded by a <p> element

【讨论】:

【参考方案2】:

您的代码无效。 p 元素只能包含短语内容https://html.spec.whatwg.org/multipage/grouping-content.html#the-p-element

【讨论】:

以上是关于如果 p 元素没有 ul,如何应用 CSS 样式 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

怎么设置ul?

如何用 jquery 添加 ul 元素的样式?

使用 Tailwind CSS 为 <ul> 中的所有 <li> 项目设置样式

在HTML中如果在ul>li中添加子标签>a链接,修改li中字词颜色为啥a的字体颜色没有改变?

如何使用 CSS 选择和设置所有具有 UL 子元素的 LI 元素? [复制]

如何使用 CSS 选择和设置所有具有 UL 子元素的 LI 元素? [复制]