CSS中模拟父元素选择器

很多情况下,我们需要找到父元素,但可惜的是css中并没有这样的一个选择器。

至于原因可以看张鑫旭的如何在CSS中实现父选择器效果这篇文章。

简单来说这个实现并不是真正的父元素选择器,只是利用其它思路来实现相同效果罢了。

HTML:

<div id="box">
  <p>pppppppp</p>
  <span></span>
</div>

CSS:

div,p{
  margin:0;
  padding:0;
}
#box{
  width:300px;
  height:300px;
  position:relative;
}
#box>span{
  position:absolute;
  top:0;
  left:0;
  width:100%;
  height:100%;
  box-shadow:0px 0px 0px 1px #ccc;
}
#box>p:hover + span{
  box-shadow:0px 0px 0px 1px red;
}
p{
  position:absolute;
  left:50%;
  top:50%;
  transform:translate(-50%,-50%);
  z-index:1;
}

效果:

hover的时候

下面说一下注意点

这个span必须放在p标签后一个位置,因为我们用的是+下一个同级选择器。还有就是p标签必须加z-index,不然span会把p标签盖住,效果就没了。

position:absolute;
left:50%;
top:50%;
transform:translate(-50%,-50%);

这段代码会把p标签垂直居中。

其实这个原理很简单,就是原本给父元素添加的样式给一个子元素添加,让子元素冒充父元素,定位就好了。

时间: 2024-08-28 13:26:25

CSS中模拟父元素选择器的相关文章

JQuery中查找父元素,子元素,追加元素,插入元素和删除元素

Jquery之所以强大,和其在获取对象时使用与css选择器兼容的语法有很大关系.而且它还兼容了CSS3的选择器,而且多出了不少. 所以jQuery的选择器也就变得很多很强大.就最基本的有以下四个: $('*')  匹配页面所有元素 $('#id') id选择器 $('.class') 类选择器 $('element') 标签选择器 $('E[attr]') 含有属性attr的元素E $('E[attr=value]') 属性attr=value的元素E JQuery中查找父元素 .closest

CSS中如何让元素隐藏

在CSS中,让元素隐藏(指屏幕范围内肉眼不可见)的方法很多,有的占据空间,有的不占据空间:有的可以响应点击,有的不能响应点击.下面一个个列出,选一个适合你的 { display: none; /* 不占据空间,无法点击 */ } { visibility: hidden; /* 占据空间,无法点击 */ } { position: absolute; top: -999em; /* 不占据空间,无法点击 */ } { position: relative; top: -999em; /* 占据空

CSS中:before和:after选择器的用法

在线演示这次给大家带来的是对话气泡效果,主要是演示了 :before / :after 和 border 的用法,赶快来围观吧. 阅读原文:CSS中:before和:after选择器的用法

CSS中块级元素水平格式化

CSS中块级元素的(width+padding+marninig+border)因该等于其包含块的width.其中margin可能为负值,其他均为正值. 如果width和margin-left和margin-right都设置为auto的话,浏览器代理会默认将margin-left和margin-right设为0,将width设为包含块的width. 如果width与margin-left.margin-right其中一个为auto,而另一个margin设为固定值的话,浏览器代理会把为auto的那

css中后代、元素、类、id选择器以及行间style优先级的比较

比较选择器优先级检验方法如下 将所有选择器应用到一个超链接上,观察结果,得出结论. 输出结果为,说明行间style的优先级是其中最高的.去掉行间style代码: 输出结果:后代选择器生效,注释其代码,继续比较: 得出输出结果,注释代码. 得出输出结果. 从上面结果不难看出 行间style > 后代 > id > class > 元素 那么为什么会是这样的结果呢, 判断优先级,以权重为指标,权重越大优先级越高:一般约定 id选择器的权重为100,类选择器权重为10,元素选择器权重为1

css设置时父元素随子元素margin值移动

父元素的盒子包含一个子元素盒子,给子元素盒子一个垂直外边距margin-top,父元素盒子也会往下走margin-top的值,而子元素和父元素的边距则没有发生变化. HTML,CSS: <div class="box1"> <div class="box2"> <div class="content"> <div class="margin">123</div> &l

CSS中块级元素和行内元素

文档流 将窗体自上而下分成一行行, 并在每行中按从左至右的顺序排放元素,即为文档流. 每个非浮动块级元素都独占一行, 浮动元素则按规定浮在行的一端. 若当前行容不下, 则另起新行再浮动. 内联元素也不会独占一行. 几乎所有元素(包括块级,内联和列表元素)均可生成子行, 用于摆放子元素. 有三种情况将使得元素脱离文档流而存在,分别是浮动,绝对定位, 固定定位. 但是在IE中浮动元素也存在于文档流中(还让我觉得这样很合理><). 浮动元素不占任何正常文档流空间,而浮动元素的定位还是基于正常的文档流

理解CSS中的三种选择器&gt;+~

1. p~ul p和ul有相同的父元素,选择出p元素之后的所有ul元素,其中,p和ul不一定是紧随,但是必须有相同的父元素 E+F            相邻兄弟选择器.选择匹配F的元素,且该元素位于所匹配元素E的后面相邻的位置 E>F 子包含选择器.F为子元素,E为F的父元素 之前很少用到这三种选择器,不过适当使用,真的方便不少... 估计理解为~  就是兄弟咯,且是有父亲的. > 这个最好理解,父亲的年龄总是大于孩子的,自然就是子包含选择器. + 相邻兄弟选择器,自然,要两个兄弟(元素)才

css中的伪元素,我今天记住了!o~yeah

对于伪类和伪元素,我如果要区别它们,一般是使用css中的手册来区分,平常时候也没特意去记,需要用到时打开手册"哦,这个是伪元素,这个是伪类",我个人觉的某些东西你把它存在网上,不一定要存在头脑中.带着这样的思维去面试的我,常常碰壁,当人事问我会什么的时候,我说我会百度,然后就没有然后了--笑话不多说,进入今天的正题! 先上张图片,毕竟有图有真相嘛~ 这是我在慕课网上练习切图技能时,老师在视频中演示的案例,我刚开始也是跟着视频一点点切,可以说全部代码都是Copy过来的,后来有感觉了,就自