首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    CSS :has() 选择器实战:不用 JS 实现父元素响应子元素状态

    以前的做法一般是监听focus/blur或配合校验库在父级上切换class,逻辑散落在JS里,组件多了之后状态同步容易漏。...CSS的:has()选择器在主流浏览器稳定支持之后,这类"父元素根据子元素状态变化"的场景可以直接用样式表解决,不用再往DOM上挂标记。...写在选择器末尾时,元素是否命中取决于它的相对选择器能不能匹配到东西。...box-shadow:0003pxrgba(37,99,235,0.15);}关键点是:has()里的参数是一个相对选择器,描述的是"从当前元素出发能找到什么",而不是"当前元素本身是什么"。...校验失败时给.field加上data-invalid,或者也可以不依赖任何JS状态,直接看子元素。

    16600

    CSS隐藏元素的方法

    CSS隐藏元素的方法 使用CSS隐藏元素的主要方式有diaplay: none;、opacity: 0;、visibility: hidden;、position: absolute; overflow...diaplay display: none;属性依照词义是真正隐藏元素,使用这个属性,被隐藏的元素不占据任何空间,用户交互操作例如点击事件都不会生效,读屏软件也不会读到元素的内容,这个元素的任何子元素也会同时被隐藏...当使用该属性将元素从显示状态切换为隐藏状态时,元素不占据原本的空间,会触发浏览器的重绘与回流。为这个属性添加过渡动画是无效的,他的任何不同状态值之间的切换总是会立即生效。...这种方式产生的效果就像元素完全不存在,但在DOM中依然可以访问到这个元素,也可以通过DOM来操作它。...,元素将会隐藏,也会占据着自己的位置,并对网页的布局起作用,与opacity不同的是它不会响应任何用户交互,元素在读屏软件中也会被隐藏,如果对于子元素的visibility被设置为visible而父元素的

    4.3K20

    能用CSS实现的就不用麻烦JavaScript

    ——Atwood定律 虽然万物都可以是JavaScript,但某种程度css的运行效率会比JavaScript高,所以笔者认为:能用CSS实现的就不用麻烦JavaScript。...从某种意义上说,它与Flexbox或CSS Grid的工作原理类似,即您需要一个容器元素,在该容器元素上设置scrolln-snap-type和多个为其设置了scroll-snap-align的子元素,...-07-18 上午9.15.50.gif] 利用 CSS 的 content 属性 attr 抓取资料 想必大家都想到了伪元素 after ,但是文字怎么获得呢,又不能用 JavaScript 。...,例如导航的菜单: [image.png] 一般要把隐藏的东西如菜单作为hover目标的子元素或者相邻元素,才方便用css控制,例如上面的菜单,是把menu当作导航的一个相邻元素: menu在正常态下是隐藏的: .menu{ display: none; } 而当导航hover时显示: ```js /*使用相邻选择器和hover

    2.3K11

    CSS伪元素的基本使用

    CSS伪元素的基本使用 上一篇文章介绍了很多个伪类的使用,这篇来说一下伪元素。 伪元素之所以称为“伪”,主要是因为它不是真正网页里的元素,但是标线行为又跟真正网页元素一样,也可以对其使用css操作。...伪元素比较少,今天就一个个的用法,不分门别类了。 一、::after和::beore after和before用的比较多一些。...: '*'; color: red } 二、::before 略 三、::cue 匹配所选元素中的WebVTT提示。...四、::first-letter 修改块级元素的第一行的第一个字母,比如你经常看到故事书中的第一个文字是大写的,就可使用它在页面上做对应的设置 五、::first-line 用在块级元素上的第一行 六、...模板 中的元素,这对于我们现在使用框架而不是再自创标签的用户来说,很少会用到

    1.9K00

    在JS中使用强大的CSS选择器来定位页面元素

    接着就发生了奇怪的现象,重新生成站代码发布完成后,自测是没有问题的,但是有网友反馈说站点访问加载不出来内容。听完自己也甚是一惊,难道是服务器出问题啦?...熟悉 JS 代码的小伙伴应该都清楚这里发生了啥,最简单的修复方式就是在注册点击事件前,加个 if 条件判断,当元素不存在时不进行事件注册。...于是便想到了使用 CSS 的选择器语法来支持,首先定位到这些按钮的父元素上,然后再逐一对子元素(即按钮本身)进行事件注册,这样当某个按钮被删除后也就无须 if 条件判断,同样也不用调整 JS 代码。...直接在浏览器终端窗口中使用 JS 语法进行了快速验证,得到的答案是可行的。...相比于 JS 中使用 ID 或名称来定位页面元素的方式,这种使用 CSS 选择器的模式,操作起来会更的加简便和灵活。

    1.4K10

    03 转换css元素的类别

    03 转换css元素的类别 通过设置display属性 属性 作用 block 块级 inline 行内 inline-block 行内块级 接来下 就跟着小demo来学习吧...什么时候块级元素和行内元素 块级元素转行内元素 我们都知道 div是块级元素 是独占一行 可以设置宽高的 并且是独占一行的 那么我们看看 给它转换成行内元素的效果吧!...转换成行内元素 可以清楚的看到 他们俩成为相亲相爱的好兄弟 在同一条线上了! 接下来就看看 行内元素转块级元素吧!...兄弟反目 可以看到 当我们设置为块级元素之后 他俩翻脸速度比翻书还快 直接另起一行 各奔东西的 转换成行内块级元素 可以看到 图中 b标签是行内元素 而p标签则是块级元素 我想给俩弄成相亲相爱的俩兄弟...结果 可以看到 当我们给这俩个标签设置成行内块级元素的时候 变成了 可设置宽高 不是独占一行的行内块级元素

    58510

    js如何动态选择和操作 CSS 伪元素,例如 ::before 和 ::after

    比如伪元素 :before和:after,用于在css渲染中向元素的头部或尾部插入内容,它们不受文档约束,也不影响文档本身,只影响最终样式。...这些添加的内容不会出现在DOM中,仅仅是在css渲染层中加入。 它不存在于文档中,所以js无法直接操作它。而jQuery的选择器都是基于DOM元素的,因此也并不能直接操作伪元素。...::selection:CSS伪元素应用于文档中被用户高亮的部分(比如使用鼠标或其他选择设备选中的部分)。(只支持双冒号的形式)。 ...更改伪元素的样式 1、更换class来实现伪元素属性值的更改: // CSS代码 .red::before { content: "red"; color: red; } .green::before...但是伪元素的内容只存在于CSS渲染树中,并不存在于真实的DOM中。所以为了seo优化,最好不要在伪元素中包含与文档相关的内容。 修改伪元素的样式,建议使用通过更换class来修改样式的方法。

    8.4K20

    js获取元素的几种形式

    通过id获取元素 document.getElementById('div');//获取id为div的元素 通过class获取 document.getElementsByClassName('top'...);//获取页面中所有的class为top的元素集合 通过标签名获取 document.getElementsByTagName('p');//获取页面中所有的标签为p的元素集合 通过name获取 document.getElementsByName...('user');//获取页面中所有的name为user的元素集合 注意:通过class,name标签名抓取的元素是一个集合,即使该类只有一个符合要求的元素目标,也返回是一个集合,因此可以存储的变量,通过变量名...[0]获得第一个符合要求的标签目标....简单可以将返回的当做一个存储符合的数组,通过下标进行找到指定的位置. 当然也可以使用数组的方法返回,集合的目标数. alert(tops.length)可以提示出class为top的目标数

    28.1K30

    css+js 实现一行多个盒子块元素响应式布局

    需求 实现一行多个盒子块元素可以在浏览器窗口改变的时候,根据浏览器视口不同的宽度,响应式改变元素的宽且可自动换行,切尽量不在右侧留白。...注意,要实现此逻辑,首先盒子块元素需要定义一个最大宽和最小宽,才能根据这两个边界值进行计算。 块元素之间有边距。 实现 <!...const num = Math.floor(clientWidth / itemWidthAll); // 按照最小可以展示的宽度,可以展示的...// 初始化定义元素的宽 let width = 100 / maxNum + "%"; // 按照最大块宽度计算放置个数,剩余的宽度可以至少放置一个最小宽度的块时...if (rest > itemMinWidthAll) { // console.log("rest剩余空间可放置一个最小宽度元素

    1.9K30

    实现元素居中的 10 个CSS方法

    absolute + (-margin) 如果元素的宽度和高度已知,我们可以使用至少 3 种方法来使元素居中。例如,在下图中,小猫的宽度和高度分别为 “500px” 和 “366px” 。...上面介绍的三种方法必须提前知道元素的宽高,但元素的宽高不确定怎么办?于是就有了flex。...10px; background-color: #e3c1a9; color: #ffffff; } 图片 图片 absolute + transform 使用变换,我们还可以在事先不知道元素的宽度和高度的情况下使元素居中...CSS新的table属性让我们可以将普通元素变成表格元素的真实效果,通过这个特性,一个元素也可以居中。...但令人惊奇的是它还可以使元素居中。不过这种方法有点难懂,代码量会比较多。

    95410

    【原创】CSS中元素的分类及转换

    一.元素: css中将标签叫做元素 二.元素的分类: 块级元素:html、body、h1-h6、p、hr、div、pre、ul+li、ol+li等 特点:独占一行,默认宽度和父级元素宽度一样宽...,如body下的任何子类块级元素都和body一样宽 可以通过wedith和height设置宽度和高度,内外边距可以控制 可以包裹其他任何元素 行内元素:a、b、u、i、em、strong、del、sup...、sub、span 特点:共享一行,无默认宽度 无法设置宽度和高度属性,实际宽度和内容有关,部分行内元素内外编剧可以控制 行内元素一般只能包裹行内元素或行内块级元素。...行内块级元素:input、img 特点:可以共享一行,无默认宽度 可以通过wedith和height设置宽度和高度属性 三.元素的转换: 通过display属性转换 属性值inline:将其他元素转化为行内元素...(通常将块级元素转换为行内元素) 属性值block:将其他元素转换为块级元素(通常将行内元素转换为块级元素) 属性值inline-block:将其他元素转换为行内内块级元素

    95820
    领券