css优先级

今天在使用公司内部框架的时候,发现一个问题。 我在页面的style元素里面写了一个class选择器,可是却不起作用。

使用F12查看,发现是当前的样式没有起作用,而是被框架生成的样式代替掉了。

当然,写内嵌的样式肯定是没问题。可问题就是,我明明在页面内部写了样式,按照常理,应该是我手写的类选择器的优先级高于外部引用的样式。

上网搜了一下,原来是涉及到了一个优先级的问题。

按照常理, css样式的优先级是:外部引用(link标签引入的)< 内部定义(即写到style标签内的)< 内嵌样式

当 内部定义的样式,在外部引用的样式的前面的时候, 这时候,起作用的就是外部引用的样式了。

比如:

<style type="text/css">   .btn{color:red}</style>

<link href ="../index.css" />

此时, 下面的样式将替换上面的样式。上面的将不再起作用。

我遇到的情况是, 这样写了样式,可是仍然不起作用。后来终于搜索到,是css 权值的问题,所谓权值,就是指 作用到某个元素上的css样式,会有一个整型值,这个值相加,就得到该元素的权值,权值大的样式的优先级将高于权值低的样式优先级。

权值的 大小:

1.  内联样式表的权值最高 1000;

2.  ID 选择器的权值为 100

3.  Class 类选择器的权值为 10

4.  HTML 标签选择器的权值为 1


我在页面定义了一个如下样式:

 .rad {
		 		 height:13px ;
		 		 line-height:13px ;
		 		 width:20px ;
		 	}


该样式没有起作用。 F12查看,结果如下:


可见手动定义的.rad 样式在下方,而且没有起作用。

究其原因, 是我定义的样式的权值过低:  .rad  权值为10

而L5-all.css改样式的权值为: .L5form input   权值: 10+1 

因此我的样式不起作用。

故此,解决办法可以是:将我定义的样式的权值提高,提高可有两个办法,一个是 在我的样式的外层元素上定义一个id,使用id选择器 然后选择到这个样式,如:

 #lab_t .rad {
		 		 height:13px ;
		 		 line-height:13px ;
		 		 width:20px ;
		 	}

权值: 100+10=110.

如此,我的样式生效:



第二个办法:在当前的元素(input radio) 的外面的元素,定义一个样式, 然后使用该样式 定位到我的radio 元素。

如:

.lab_cls input{
		 	 	 height:13px ;
		 		 line-height:13px ;
		 		 width:20px ;
		 }

权值:10+1=11

权值相等,但是 这个样式在外部样式的后面,因此可以生效。

结果如图:



当然,这样略显麻烦,可以用加一个关键字,将我自定义的样式的优先级调整到最高:

该关键字是:!important


.rad {
		 		 height:13px !important;
		 		 line-height:13px !important;
		 		 width:20px !important;
		 	}

生效:


IE测试同样生效。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值