在自学HTML5和CSS3的时候遇到了一个问题:
HTML代码如下:
<!DOCTYPE html>
<html>
<head>
<title>Page</title>
<link rel="stylesheet" type="text/css" href="css/style.css" />
</head>
<body>
<page>
<p id='test0'>
</p>
<p id='test1'>
</p>
<p id='test2'>
</p>
<p id='test3'>
</p>
</page>
<content>
<p id='menu'>
<ul id='menulist'>
<li><a id='list0' href='#test0'>test0</a></li>
<li><a id='list1' href='#test1'>test1</a></li>
<li><a id='list2' href='#test2'>test2</a></li>
<li><a id='list3' href='#test3'>test3</a></li>
</ul>
</p>
</content>
</body>
</html>
CSS代码如下:
html, body {
height:100%;
}
body {
width: 100%;
background: #87cfe6;
overflow: hidden;
}
#menulist{
margin-top: 20px;
width: 235px;
display:block;
list-style:none;
z-index:3;
}
#menulist a{
display: block;
background: rgba(255,255,255,0.9);
line-height: 50px;
padding: 0px 20px;
margin-bottom: 6px;
box-shadow: 1px 1px 2px rgba(0,0,0,0.2);
}
#menulist a:hover {
background: #ddd;
position:relative;
left:20%;
box-shadow:0 -8px 8px -8px rgba(0, 0, 0, 0.5),0 8px 8px -8px rgba(0, 0, 0, 0.5);
transition:all 0.3s ease-in-out;
}
#test0:target ~ content #menu #menulist #list0,
#test1:target ~ content #menu #menulist #list1,
#test2:target ~ content #menu #menulist #list2,
#test3:target ~ content #menu #menulist #list3{
background:#f0f;
position:relative;
left:20%;
box-shadow:0 -8px 8px -8px rgba(0, 0, 0, 0.5),0 8px 8px -8px rgba(0, 0, 0, 0.5);
}
问题是这样的,在HTML里面,如果将
————更新————
为了方便表述,我把去掉page的放在了http://codepen.io/anon/pen/xnmgK这个网站上,这也是我想要的最终效果。但是将里面的page的注释去掉之后,就不能用了,麻烦大家帮我看一下吧。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
我还是贴一下代码吧。
正如我在评论所说,
叔侄关系
的选择器貌似没找着。退而求其次,换个
target
大叔,就找a
他爸li
,父子选择器总有吧。:target 锚选择器 - 1楼有个w3c链接解释,意思是当url带有锚信息的时候(url中跟#后面的id)
对应html中的第一个匹配的id(一般html只解析第一个id)
如:url 是 xxx.com#abc
就只对id=abc生效
当然可以使用 #id:target 来设置不同id在:target下的效果。
所以 :target 的应用范围一般是tab选中态,以及强调锚状态的作用
以下代码可以简化。
可以简化成
我想LZ想要 page里的p 和 content里的li 都变颜色
不过CSS现在不能选择子元素的父元素
所以按照现在这结构,应该不行吧...
P.S. LZ的表述太歧义了...