时间:2021-05-08
前言
我们有时候会遇到 hover 伪类给元素添加边框的时候,元素中的内容发生位移,虽然我们设置了 box-sizing: border-box 并且规定了元素的宽高,但是内容依然被边框挤开了。如下面这种情况:
<style type="text/css" media="screen"> .test { height: 30vmin; width: 30vmin; background: lightblue; box-sizing: border-box; } .test:hover { border: 5px solid black; }</style><div class="test"> this is a div.</div>这里的原因很明显,我们的元素大小并没有变(如果没有设置元素宽高或者 box-sizing: border-box 则元素大小会改变), box-sizing: border-box 是生效的,但是元素中的内容因为突然添加的边框而被挤开了,我们的盒模型从外到内依次是 margin , border , padding , content ,所以新加入的 border 必然将 content 压缩的更小,并且 content 的边界坐标也变了,因为导致视觉上的内容移动。所以解决问题的办法就是让边框的添加不影响 content 的位置。
为元素添加边框
贸然出现的边框改变了原有的布局,让内容移动了,既然如此,我们可以在之前的布局中就让边框存在就可以了。
.test { height: 30vmin; width: 30vmin; background: lightblue; border: 5px solid transparent; box-sizing: border-box;}.test:hover { border: 5px solid black;}使用 box-shadow
使用不占用盒模型空间的 box-shadow 或者 outline 也是一种选择,
.test:hover { box-shadow: 0 0 0 5px black; outline: 5px solid black;}用 padding
我们可以通过改变 padding 大小来给 border 预留空间。
.test { height: 30vmin; width: 30vmin; background: lightblue; box-sizing: border-box; padding: 5px;}.test:hover { padding: 0; border: 5px solid black;}以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
做移动前端也有一些日子了,一直有个问题没有解决,就是与pc端那样的一个:hover的效果,:hover是鼠标指针浮动在其上的元素的一个选择器,但因为在移动端是没
1、IE6怪异解析之padding与border算入宽高原因:未加文档声明造成非盒模型解析解决方法:加入文档声明2、IE6在块元素、左右浮动、设定marin时造
hover([over,]out)一个模仿悬停事件(鼠标移动到一个对象上面及移出这个对象)的方法当鼠标移动到一个匹配的元素上面时,会触发指定的第一个函数。当鼠标
父子元素margin重叠解决办法:给子元素添加浮动属性,相应父元素添加必要的清浮动属性;给父元素添加边缘属性,如padding、border;同级元素margi
遇到jquery无法为动态生成的元素添加点击事件,谷歌一下,整理一下解决方法如下:(中间的元素是动态生成的),现在想为添加点击事件,例子如下:这是元素内容//i