CSS实现根据子元素数量应用不同样式的操作方法

  发布时间:2023-07-19 16:30:47   作者:chenSee   我要评论
在前端的页面布局中经常会出现在子元素个数使用不同的样式的需求,这篇文章主要介绍了CSS实现根据子元素数量应用不同样式的操作方法,需要的朋友可以参考下
theme: condensed-night-purplehighlight: atelier-cave-light

在前端的页面布局中经常会出现在子元素个数使用不同的样式的需求,比如文章列表,在较少内容下单列表现,而在元素内容较多时使用双列表现。再比如在页面排版上,可以根据元素内容的多少来修改内容的缩放,位置,颜色等样式

:has() 选择器简介

: has()选择器中的括号传递一个选择器参数,如果选择器匹配上了元素就会应用后面的样式,例如:

<div>
	div
</div>
<div>
	<h1>h1</h1>
	div
</div>
div{
	border:1px solid #000;
	margin:1em;
}
div:has(h1){
	background-color:red;
}

显示结果

:has() + : nth-child ()

现在我们知道了 :has() 选择器是用来在匹配成功时使用样式的,而加上 :nth-child() 就会有根据子元素数量去匹配样式的效果例如:

<div class="container">
	<p>p1</p>
</div>
<div class="container">
	<p>p1</p>
	<p>p2</p>
</div>
<div class="container">
	<p>p1</p>
	<p>p2</p>
	<p>p3</p>
</div>
.container{
	border:1px solid #000;
	margin:1em;
}
/* default */
.container {
	background-color:#ddd;
}
/* 包含2个p时 */
.container:has(> p:nth-child(2)){
	background-color:#aaa;
}
/* 包含3个p时 */
.container:has(> p:nth-child(3)){
	background-color:red;
}

显示效果:

其他使用示例超过一定数量,某子元素应用样式

 <div class="container">
    <div>1</div>
    <div>2</div>
    <div>3</div>
    <div>4</div>
    <div>5</div>
  </div>
   <div class="container">
    <div>1</div>
    <div>2</div>
    <div>3</div>
    <div>4</div>
  </div>
  <style>
    .container{
      display: flex;
      align-items: center;;
      gap: 1em;
      padding: 1em;
      height: 200px;
    }
    .container > div {
      height: 80%;
      background-color: #ddd;
      display: flex;
      align-items: center;
      justify-content: center;
      flex:auto;
    }
    .container:has( > div:nth-child(5)) > div:nth-child(3){
      background-color:aqua;
      flex:1.2;
      height: 100%;
    }
  </style>

效果:只有在 5 个及以上子元素的情况下有,某子元素有特定样式(比如轮播图场景)

根据子元素数量文本分栏

<div class="container">
	<p>Occaecat minim eu sint. Quis exercitation anim ipsum Lorem veniam sint. Proident ea irure id sit eu eu in. Cillum incididunt nisi nisi velit non cupidatat sint veniam minim voluptate voluptate exercitation velit tempor aliquip. Nisi exercitation ullamco aute ea laborum incididunt deserunt minim proident dolor tempor proident voluptate ipsum sit. Reprehenderit mollit exercitation amet cillum et irure est laboris esse excepteur voluptate aute. In in mollit qui aliqua culpa aliquip fugiat nulla occaecat magna id veniam quis.</p>
	<p>Occaecat minim eu sint. Quis exercitation anim ipsum Lorem veniam sint. Proident ea irure id sit eu eu in. Cillum incididunt nisi nisi velit non cupidatat sint veniam minim voluptate voluptate exercitation velit tempor aliquip. Nisi exercitation ullamco aute ea laborum incididunt deserunt minim proident dolor tempor proident voluptate ipsum sit. Reprehenderit mollit exercitation amet cillum et irure est laboris esse excepteur voluptate aute. In in mollit qui aliqua culpa aliquip fugiat nulla occaecat magna id veniam quis.</p>
</div>
<div class="container">
	<p>Occaecat minim eu sint. Quis exercitation anim ipsum Lorem veniam sint. Proident ea irure id sit eu eu in. Cillum incididunt nisi nisi velit non cupidatat sint veniam minim voluptate voluptate exercitation velit tempor aliquip. Nisi exercitation ullamco aute ea laborum incididunt deserunt minim proident dolor tempor proident voluptate ipsum sit. Reprehenderit mollit exercitation amet cillum et irure est laboris esse excepteur voluptate aute. In in mollit qui aliqua culpa aliquip fugiat nulla occaecat magna id veniam quis.</p>
	<p>Occaecat minim eu sint. Quis exercitation anim ipsum Lorem veniam sint. Proident ea irure id sit eu eu in. Cillum incididunt nisi nisi velit non cupidatat sint veniam minim voluptate voluptate exercitation velit tempor aliquip. Nisi exercitation ullamco aute ea laborum incididunt deserunt minim proident dolor tempor proident voluptate ipsum sit. Reprehenderit mollit exercitation amet cillum et irure est laboris esse excepteur voluptate aute. In in mollit qui aliqua culpa aliquip fugiat nulla occaecat magna id veniam quis.</p>
	<p>Occaecat minim eu sint. Quis exercitation anim ipsum Lorem veniam sint. Proident ea irure id sit eu eu in. Cillum incididunt nisi nisi velit non cupidatat sint veniam minim voluptate voluptate exercitation velit tempor aliquip. Nisi exercitation ullamco aute ea laborum incididunt deserunt minim proident dolor tempor proident voluptate ipsum sit. Reprehenderit mollit exercitation amet cillum et irure est laboris esse excepteur voluptate aute. In in mollit qui aliqua culpa aliquip fugiat nulla occaecat magna id veniam quis.</p>
</div>
<style>
.container {
	border: 1px solid #000;
	margin: 1em;
	columns: 1;
}
/* 包含3个p时 */
.container:has(> p:nth-child(3)) {
	columns: 2;
}
</style>

显示效果:

结尾

使用 :has() + :nth-child() 可以在前端页面中更好的去做页面布局的自适应,也在内容不足的情况下提供了一种简单实用的容错方法。

而在兼容性上除 Firefox 浏览器,其他的浏览器均有较好的支持。

到此这篇关于CSS实现根据子元素数量应用不同样式的操作方法的文章就介绍到这了,更多相关css子元素数量应用不同样式 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章,希望大家以后多多支持脚本之家!

相关文章

  • CSS实现根据子元素数量应用不同样式的操作方法

    在前端的页面布局中经常会出现在子元素个数使用不同的样式的需求,这篇文章主要介绍了CSS实现根据子元素数量应用不同样式的操作方法,需要的朋友可以参考下
    2023-07-19
  • css属性pointer-events实现点击穿透的示例代码

    本文主要介绍了css属性pointer-events实现点击穿透的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编
    2023-07-19
  • css实现两个div并列显示的多种方法

    CSS是一种样式语言,其中,两个div并列的实现是很常见的需求,本文就来介绍一下css实现两个div并列显示的多种方法,具有一定的参考价值,感兴趣的可以了解一下
    2023-07-12
  • html+css实现点赞特效的示例代码

    本文主要介绍了html+css实现点赞特效的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习
    2023-07-11
  • HTML+CSS实现背景图片铺满页面的三种方法

    在前端页面设计的时候大家总会遇到要添加背景图片的情况去美化自己的页面,本文就介绍了HTML+CSS实现背景图片铺满页面的三种方法,具有一定的参考价值,感兴趣的可以了解一
    2023-07-05
  • CSS 颜色混合的五种实现方式

    本文主要介绍了CSS 颜色混合的五种实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-27
  • CSS中nth-child 的使用示例教程

    nth-child 选择器 选择指定选择器的父元素下的 指定选择器元素,这篇文章主要介绍了CSS中nth-child 的使用示例教程,需要的朋友可以参考下
    2023-06-26
  • CSS将页面元素隐藏的10种方法小结

    在Web开发中,隐藏页面元素使其视觉不可见是一个非常常见的需求,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小
    2023-06-25
  • CSS中visibility:hidden、display:none、opacity:0、rgba设置元素隐藏

    本文主要介绍了CSS中visibility:hidden、display:none、opacity:0、rgba设置元素隐藏的区别,具有一定的参考价值,感兴趣的可以了解一下
    2023-06-19
  • CSS处理文字段落尾行行末缩进,点击查看更多展开效果

    这篇文章主要介绍了CSS处理文字段落尾行行末缩进,点击查看更多展开效果,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-19

最新评论