首页 > 其他分享 >使用伪类hover选择器显示边框页面抖动问题

使用伪类hover选择器显示边框页面抖动问题

时间:2023-08-06 22:45:17浏览次数:36  
标签:3px hover 伪类 悬浮 边框 padding border 选择器

起因

在mdn上完成“鼠标在某些 HTML 元素上悬停时增加动画”的练习时发生异常。

当鼠标悬浮在p标签上,边框出现的同时,页面也会跟着抖动:
image

我是打算在css样式里给p标签绑定伪类hover,当鼠标悬浮在p元素上时会出现边框并改变背景颜色,我的代码如下:

p:hover{
    border: 3px ridge;
    background-color: aliceblue;
}

这是因为在鼠标悬浮在p标签的同时,新增了一个3px的边框,故会影响原来的页面布局将该p元素的相邻元素撑开,从而导致页面抖动的现象。

结果

解决方法一(推荐)
提前给p标签添加边框,只需要将“边框颜色改为与背景相同颜色”或者“边框颜色完全透明”,然后在hover选择器中将颜色改为可见的颜色即可:

/*当鼠标在某些 HTML 元素上悬停时增加动画*/
p{
    /*完全透明的边框*/
    border: 3px ridge rgba(0, 0, 0, 0);
}
p:hover{
    /*可见颜色的边框 */
    border: 3px ridge gray;
    background-color: aliceblue;
}

这样在鼠标没悬浮在p标签上前边框(颜色)是不显示出来的,当鼠标悬浮上去时边框就会显示出来,并且不会有抖动现象。

解决方法二
提前用padding属性占着要添加边框的位置,再将hover选择器中设置与padding同宽的边框即可:

p{
    padding: 5px;
}
p:hover{
    padding: 0px;
    border: 5px ridge gray;
    background-color: aliceblue;
}

在鼠标悬浮在p标签上前padding会占着3px的位置,然后当鼠标悬浮在p标签上时会将padding设置为0,同时padding让出的位置就会由一个3px宽的边框来填充,以达到无缝切换的效果。

具体的可以如下图解析:
悬浮前:
image

悬浮后:
image

方法二有点问题,在border的宽度设置的较小时,如果鼠标切换悬浮目标速度较快,还是会出现微小的局部抖动,譬如把border的宽度设置为3px时就会这样。

标签:3px,hover,伪类,悬浮,边框,padding,border,选择器
From: https://www.cnblogs.com/hjjbky/p/17610232.html

相关文章

  • Unity 编辑器选择器工具类Selection 常用函数和用法
    Unity编辑器选择器工具类Selection常用函数和用法点击封面跳转下载页面简介在Unity中,Selection类是一个非常有用的工具类,它提供了许多函数和属性,用于操作和管理编辑器中的选择对象。本文将介绍Selection类的常用函数和用法,并提供相应的示例代码。静态属性1.activeConte......
  • Unity 编辑器选择器工具类Selection 常用函数和用法
    Unity编辑器选择器工具类Selection常用函数和用法点击封面跳转下载页面简介在Unity中,Selection类是一个非常有用的工具类,它提供了许多函数和属性,用于操作和管理编辑器中的选择对象。本文将介绍Selection类的常用函数和用法,并提供相应的示例代码。静态属性1.activeContex......
  • 选择器
    CSS(CascadingStyleSheets,层叠样式表)中包含各种类型的选择器,用于选择要应用样式的HTML元素。选择器定义了哪些元素将受到CSS规则的影响,从而可以控制元素的外观和样式。以下是一些常见的CSS选择器类型:元素选择器:选择特定标签的元素。例如,div会选择所有<div>元素。ID选择......
  • jQuery--dom对象选择器
    一、概述选择器:就是一个字符串,用来定位dom对象定位了dom对象就可以通过jquery的函数操作dom对象二、常用选择器1、id选择器$("#id值")通过dom对象的id定位dom对象。id是当前页面唯一值 2、class选择器$(".class样式名")使用样式的名称定位dom对象3、标签选择器$("标签名......
  • css 中强制换行后,伪类元素变形,用到的flex-shrink 属性
    之前都没用过这个属性,最近做项目遇到一个不同屏幕下可能会换行的问题,设置了强制不换行,但是伪类元素就没挤没了,请教了同事,用到了flex-shrink属性然后我就去看了看这个属性的用法,简单记录一下flex-shrink属性指定了flex元素的收缩规则。flex元素仅在默认宽度之和大于容器的时......
  • css伪类选择器大全
    伪类选择器css伪类选择器大全:https://developer.mozilla.org/zh-CN/docs/Web/CSS/Pseudo-classes伪类含义:link选中未访问过的超链接:visited选中已访问过的超链接:hover选中鼠标移入的元素:active选中鼠标按下的元素:focus选中聚焦的表单元素:......
  • a标签伪类设置后不生效
    a标签伪类设置后不生效检查书写伪类顺序是否正确link->visited->hover->activea{/*未访问过*/&:link{color:green;}/*访问过*/&:visited{color:red;}/*移入超链接*/&:hover{color:#abcdef;}/*按下超链接......
  • 关于elementUI中Cascader 级联选择器高度问题:终极解决方案
    在使用elementUi级联选择器时,如果里面的option太多,导致它撑满整个屏幕,网上找了挺久的解决方案,都是说在全局设置它的高度,这个方法有效,但是这种方式我忍不了,因为它会影响到全局Cascader样式,以下设置意味着整个项目中的所有级联选择器都是300px,那如果我在别的页面没那么多option,岂不......
  • 通过js动态改变样式、改变伪类样式
    1、设置变量2、使用变量3、动态设置变量......
  • element-ui 日期选择器报错 Prop being mutated: "placement"
    报错信息解决方法,添加placement="bottom-start"<el-date-pickerv-model="queryParams.startTime"type="date"placeholder="开始时间"value-format="yyyy-MM-ddHH:mm:ss"placement="bottom-start">......