张山疯呀 發表於 2026-5-3 22:16:39

css通过子元素选择父元素的实现示例

<p>伪类:has选择父元素</p>
<div class="jb51code"><pre class="brush:css;">td:has(&gt; .unfoldTable){
//可选中所有td下包含unfoldTable的class标签的td属性
color: red;
}
td:has(&gt; div){
//可选中所有td下包含div标签的td属性
color: red;
}</pre></div>
<p>特殊举例分析:</p>
<p>个别UI框架个别标签通过事件直接生成或者无法选中的情况。直接使用::v-deep会导致全部标签改变,包裹标签使用class名::v-deep无法选中父元素改变父元素属性的情况。</p>
<p>如:elementui的table的type=&quot;expand&quot;表格展开行。点击展开后td标签有padding。但td标签和包裹他的tr标签都是点击后产生的。无法在外层包裹div,直接用::v-deep会改变包裹他的表格的样式。</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202402/2024021915591082.png" /></p>
<p>所以可以使用伪类:has来改变td标签的padding。</p>
<p>部分代码:</p>
<div class="jb51code"><pre class="brush:js;">//标签
&lt;el-table-column type="expand"&gt;
          &lt;template slot-scope="scope"&gt;
            &lt;div class="unfoldTable"&gt;
            &lt;el-table
            :show-header="false"
            :data="statusDetail"&gt;
                &lt;el-table-column label="序号" width="80" align="center" /&gt;
                &lt;el-table-column width="40"&gt;&lt;/el-table-column&gt;
//样式
::v-deep td:has(&gt; .unfoldTable){
//需要额外加入穿透和!important
padding: 0px !important;
}</pre></div>
頁: [1]
查看完整版本: css通过子元素选择父元素的实现示例