You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于兄弟元素子元素readonly属性修改样式(Vuetify+Stylus)

根据input[readonly]状态修改input-group__details样式的实现方案

当然可以做到!不过因为CSS目前还不支持父选择器,我们得换个思路——利用兄弟选择器来实现,毕竟你的DOM结构里input的父容器.input-group__input和.input-group__details是同级元素,我们可以通过定位input[readonly]来关联到目标元素。

下面给你几种实用的Stylus写法:

1. 通用兄弟选择器(兼容性最好)

这种写法适配所有现代浏览器,通过选中包含input[readonly]的.input-group__input,再选中它之后的所有同级.input-group__details:

.input-group
  // 当内部input为readonly时,修改input-group__details样式
  .input-group__input input[readonly]
    ~ .input-group__details
      // 示例样式:修改背景色和文字颜色
      background-color: #f5f5f5
      color: #9e9e9e
      // 可根据需求添加边框、透明度等样式

2. 相邻兄弟选择器(更精准)

如果.input-group__details是紧跟在.input-group__input之后的唯一同级元素,用+相邻兄弟选择器会更高效:

.input-group
  .input-group__input input[readonly]
    + .input-group__details
      // 示例样式:降低透明度并禁用交互
      opacity: 0.6
      pointer-events: none

3. :has()伪类(现代浏览器推荐)

如果你不需要兼容旧版浏览器,可以用:has()伪类直接给包含readonly input的.input-group添加状态,这样不仅能修改input-group__details,还能同步调整label等其他子元素的样式:

.input-group:has(.input-group__input input[readonly])
  label
    color: #757575
  .input-group__details
    // 示例样式:添加左侧边框标识只读状态
    border-left: 2px solid #ccc

这些方案都能完美实现你想要的效果,根据你的项目兼容性需求选一个就行!

内容的提问来源于stack exchange,提问作者Artur Grigio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:20:54