li定义的class不起作用是怎么回事

前端 思享 894浏览

给列表元素(如 ul li、ol li)定义 CSS 样式,通常的做法是给父元素(如 ul)定义一个 CSS 样式,再用这个样式来定义子元素(如 li)的样式,因为子元素通常比较多,样式又大多相同,一个个定义比较麻烦。这样定义有时会出现一个问题:就拿 ul li 来说,所有 li 元素都用一个通用的 CSS 样式,但有一个 li 元素还要加一个独有的 CSS 样式,例如当前菜单就会出现这种情况;此时,需要给这个 li 定义一个独立的 CSS 样式,定义容易使用难,把独立定义的 CSS 样式用于 li 却不起作用。这个问题想必做过 Web 前端设置的人都遇到过。

之前已经通过 ul 给 li 定义了一个 CSS 样式,现在又单独定义一个,也就是定义双重CSS,再通过各自为正的方法定义会无效自然不起作用,应该怎么定义才起作用?看下面的实例。

给ul的其中一个li定义的CSS不起作用(双重CSS)举例

html代码:

  1. <ul class="test">
  2. <li>li的CSS不起作用</li>
  3. <li class="current">当前li应该为红色,但CSS样式没有起作用</li>
  4. <li>给ul的其中一个li定义的CSS不起作用</li>
  5. </ul>

CSS样式:

  1. .test{width:360pxborder:1px solid #232323;list-style:none;}
  2. .test li{line-height:24pxmargin-top:8pxcolor:Blue;}
  3. .current{color:Red;}

效果图:

CSS效果图

以上 CSS 样式给ul的所有li的文字定义了蓝色,给当前li(中间一行)的文字定义了红色,但文字仍然为蓝色,说明 .current 样式没有起作用。

让ul的其中一个li(当前li)起作用的方法

只需把样式 .current 定义为当前 li 的样式就会起作用,.current 修改为:

  1. .test li.current{color:Red;}

效果图:

CSS效果图

推荐阅读

右侧固定宽度,左侧自适应两栏布局

最近修改了一个主题。原始主题的左侧是侧边栏,右侧是内容体。在代码中,侧栏代码放在主要内容之前。我的习惯是主要内容在左边,主要内容在前面,侧边栏在右边。于是我在网上搜了一下,找到了两种实现方式。一般来说,一种方法是使用cal()。我用的是这个,第二个是......

css3怎么实现文字闪烁效果

如果不需要渐变闪烁效果,我们可以在关键帧动画中定义50%和50.1%的不透明度值。...

纯css实现轮播和点击切换效果(无JS)

接下来,根据需要设置ul的长度。这里,首先制作三个切换窗口,因此ul的宽度被设置为容器宽度的300%,li是每次切换时显示的子元素,宽度被设置为所显示容器的100%。所有多余的部分都被隐藏起来,这样我们就可以通过修改ul的margin-left属性的......