CSS中,类的优先级是怎样的?我有个例子看不懂,麻烦高人解答

在CSS文件中,关于Img的有以下这么两句.content_banneraimg{float:left;}.content_bannerimg{border:none;m... 在CSS文件中,关于Img的有以下这么两句
.content_banner a img{float:left;}
.content_banner img{border:none;margin:0px;padding:0px;}

在网页中,
有这么一句
<div class="content_banner">
<a href="#"><img class="aligncenter" src="#"/></a>

</div>

为了让图片实现居中效果,因为aligncenter还没定义,这个时候,
我在CSS文件中添加
.aligncenter{display: block; margin-left: auto; margin-right: auto;}

但这样的情况下,图片依然左对齐,而没有居中

我又尝试了改为添加
.content_banner a img.aligncenter{display: block; margin-left: auto; margin-right: auto;}

结果还是不行,依然左对齐

只有我在删除了 .content_banner a img{float:left;}的情况下,
再添加 .content_banner a img.aligncenter{display: block; margin-left: auto; margin-right: auto;} 才能生效。

我这里有三个不懂
1、a img 和 img有什么不同
为什么控制的是<a href="#"><img class="aligncenter" src="#"/></a>
但用的是a img 而不是img,这里标签明明是img啊

2、引用类的优先级是怎样的?为什么不是就近原则?
在下面两句同时存在的情况下:
.content_banner a img{float:left;}

.content_banner a img.aligncenter{display: block; margin-left: auto; margin-right: auto;}

为什么<a href="#"><img class="aligncenter" src="#"/></a>不能生效?引用aligncenter不是就近原则吗?

3、我试了下,上面的句子,其实可以去掉前面的 .content_banner
只写a img.aligncenter{display: block; margin-left: auto; margin-right: auto;}仍有效
但为什么去掉a img只写.aligncenter{display: block; margin-left: auto; margin-right: auto;}就不行了?
我去了a img,不是把aligncenter的可使用范围扩大了吗?不是代表任何地方都可引用的意思吗?
展开
 我来答
百度网友b64534a
2012-07-22 · TA获得超过5.1万个赞
知道大有可为答主
回答量:1148
采纳率:85%
帮助的人:379万
展开全部
1.a img 和 img的不同之处:
a img 是代表的是标签a中的图片,仅控制带链接的图片。
img 是代表的是图片,包括已带链接和未带链接的图片。

2.引用类的优先级是采用就近原则。
.content_banner a img{float:left;}
.content_banner a img.aligncenter{display: block; margin-left: auto; margin-right: auto;}
这两条样式其实都采用了,
如果在.content_banner a img.aligncente添加右浮动,那么采用的样式就是.content_banner a img.aligncente。

3.只写a img.aligncenter{display: block; margin-left: auto; margin-right: auto;}有效,因为你的样式控制的是链接中的图片,
写 .aligncenter{display: block; margin-left: auto; margin-right: auto;}这只是代表一个class,但因为这个图片是一个链接图片,所以图片虽然采用了这条样式,但它会被链接样式给覆盖掉。

希望对你有所帮助。
追问
首先谢谢。
但对后面两个问题,还不太懂。
第2问题中,既然就近原则,
在网页中的语句是
离图最近的声明,是要引用aligncenter这个类的,那么应该是
.content_banner a img.aligncenter{} 比 .content_banner a img{} 更近呀,
为什么不是前者覆盖后者;
第3问题,.aligncenter{}的写法不是等于*.aligncenter{} 通配符的意思么?
那应该是所有标签(包括 a img)都可以引用呀?
追答
第2个问题中,是就近原则

但是这里的问题是一个元素是可以采用多个样式,这个你应该知道的。
比如:
body{
color:#555555;
font-size:12px;}
h1{
line-height:30px;
}
页面代码中出现了:
我是标题1
那么这个“我是标题1”采用的样式就应该是:color:#555555;font-size:12px;line-height:30px;
这三个样式。

而我们所谓覆盖的问题就是这个东西已经有了,再出现一个这样的东西,才会覆盖。
你已经有一条:.content_banner a img{float:left;}
而在.content_banner a img.aligncenter这个里面没有出现float属性,这样的话这两个样式就不存在什么覆盖的问题了,而是都被采用了。这下你懂了么
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式