导航栏布局时遇到的问题以及解决办法 css选择器优先级


得到的导航栏效果

添加#menu ul li{width:30px;}
效果如图

将会使列表项和分隔区域的宽度同时改变因为id选择器的优先级高于类选择器,此时应该为列表项添加内联样式如图

才能得到如下效果
或者可以使用第二种方法


#menu ul li{
	float:left;
	margin-left:10px;text-align:center;padding-left:10px;实现列表项文字的居中
line-height:28px;
	height:28px;
	width:40px;
	border-left:2px solid red;添加分割线
}
第二个遇到的问题是列表项的浮动错位问题

解决办法是在列表ul的样式表中添加属性font-size:0px;
#menu ul{
	list-style-type:none;
	font-size:0px;
    height:28px;
}
第三个遇到的问题是左右浮动错位问题,不知道怎么解决,小忧伤

选择器种类
严格来讲,选择器的种类可以分为三种:标签名选择器、类选择器和ID选择器。
选择器的优先级别
了解了各种选择器后,还有一个重要的知识点就是CSS选择器的优先级。这也就是为什么polaris会遇到文章开头的问题。举个简单的例子
<div class="city">
<span class="beijing"> beijing </span>
<span> beijing </span>
</div>
如果已经把.city下面span内的字体设置成红色:
- .city span {color:red;}
这时,如果要改变.city的颜色为蓝色,用下面的命令是不能实现的:
- .city {color:blue;}
出现这种情况就是因为后一个命令的优先级不够,两条相互冲突的样式设置,浏览器只会执行优先级较高的那个。
那么选择器的优先级是怎么规定的呢?
一般而言,选择器越特殊,它的优先级越高。也就是选择器指向的越准确,它的优先级就越高。通常我们用1表示标签名选择器的优先级,用10表示类选择 器的优先级,用100标示ID选择器的优先级。
比如上例当中 .polaris span {color:red;}的选择器优先级是 10 + 1 也就是11;而 .polaris 的优先级是10;浏览器自然会显示红色的字。
div.test1 .span var 优先级 1+10 +10 +1
span#xxx .songs li 优先级1+100 + 10 + 1
#xxx li 优先级 100 +1
对于什么情况下使用什么选择器,用不同选择器的原则是:第一:准确的选到要控制的标签;第二:使用最合理优先级的选择器;第三:HTML和CSS代码尽量简洁美观。通常:
1、最常用的选择器是类选择器。
2、li、td、dd等经常大量连续出现,并且样式相同或者相类似的标签,我们采用类选择器跟标签名选择器结合的后代选择器 .xx li/td/dd {} 的方式选择。
3、极少的情况下会用ID选择器,当然很多前端开发人员喜欢header,footer,banner,content设置成ID选择器的,因为相同的样式在一个页面里不可能有第二次。
在这里不得不提使用在标签内引入CSS的方式来写CSS,即:
<div style="color:red">city</div>
这时候的优先级是最高的。我们给它的优先级是1000,这种写法不推荐使用,特别是对新手来说。这也完全违背了内容和显示分离的思想。DIV+CSS的优点也不能再有任何体现。
简洁、高效的CSS
所谓高效的CSS就是让浏览器在查找style匹配的元素的时候尽量进行少的查找,下面列出一些我们常见的写CSS犯一些低效错误:
◆不要在ID选择器前使用标签名
一般写法:DIV#divBox
更好写法:#divBox
解释: 因为ID选择器是唯一的,加上div反而增加不必要的匹配。
◆不要再class选择器前使用标签名
一般写法:span.red
更好写法:.red
解释:同第一条,但如果你定义了多个.red,而且在不同的元素下是样式不一样,则不能去掉,比如你css文件中定义如下:
- p.red{color:red;}
- span.red{color:#ff00ff}
如果是这样定义的就不要去掉,去掉后就会混淆,不过建议最好不要这样写
◆尽量少使用层级关系
一般写法:#divBox p .red{color:red;}
更好写法:.red{..}
◆使用class代替层级关系
一般写法:#divBox ul li a{display:block;}
导航栏布局时遇到的问题以及解决办法 css选择器优先级的更多相关文章
- ViewPager+GridView实现首页导航栏布局分页效果
		如图是效果图用ViewPager+GridView实现首页导航栏布局分页效果来实现的效果 Demo下载地址:http://download.csdn.net/detail/qq_29774291/96 ... 
- vue中滚动页面,改变样式&&导航栏滚动时,样式透明度修改
		vue中滚动页面,改变样式&&导航栏滚动时,样式透明度修改.vue <div class="commonHeader" v-bind:class=" ... 
- 爬虫爬数据时,post数据乱码解决办法
		最近在写一个爬虫,目标网站是:http://zx.bjmemc.com.cn/,可能是为了防止被爬取数据,它给自身数据加了密.用谷歌自带的抓包工具也不能捕获到数据.于是下了Fiddler. F ... 
- Excel在任务栏中只显示一个窗口的解决办法
		Excel在任务栏中只显示一个窗口的解决办法 以前朋友遇到过这个问题,这次自己又遇到了,习惯了以前的那种在任务栏中显示全部窗口,方便用Alt+Tab键进行切换. 如果同时打开许多Excel工作簿, ... 
- Bootstrap中关闭第二个模态框时出现的问题和解决办法
		Bootstrap中关闭第二个模态框时出现的问题和解决办法 1.关闭第二个模态框时,第一个模态框跟着消失. 解决办法: 第二个模态框的代码不要写在第一个模态框里面,确保两个模态框相对独立; 2.关闭第 ... 
- oracle执行update语句时卡住问题分析及解决办法
		转载:http://www.jb51.net/article/125754.htm 这篇文章主要介绍了oracle执行update语句时卡住问题分析及解决办法,涉及记录锁等相关知识,具有一定参考价值, ... 
- 返回xml过长时被nginx截断的解决办法
		返回xml过长时被nginx截断的解决办法 问题描述:通过网页获取数据,数据格式为xml.当xml比较短时,可以正常获取数据.但是xml长度过长时不能正常获取数据,通过观察返回数据的源代码,发现xml ... 
- RS错误RSV-VAL-0032之项目未在布局中引用的3种解决办法
		如下图所示,我用RS新建了一个空白页面,拖入了一个列表,给该列表新建了一个条件样式 条件样式如下所示,表达式来自查询1 运行,报错如下图所示 原因就是条件样式使用到了查询1中的数据项1但是数据项1在报 ... 
- IDEA使用maven构建时控制台中文乱码的解决办法
		使用maven clean install 项目时控制台中文乱码,解决办法如下: Setting->maven->runner VMoptions: -Dfile.encoding=UTF ... 
随机推荐
- mybatis单表操作实现完全java代码封装
			之前在项目中用到mybtis操作数据库时都是手动写sql,对于我这种sql水平不是很好地人来说痛苦死了:动态查询的sql我表示到现在还不会写呀! 还好,利用数据库表反向生成的工具可以帮我解决大部分的s ... 
- xss跨站脚本攻击汇总
- Java并发(二)-实现同步
			并发带来的问题 先看一个单例类,后文中都会用到: public class SimpleWorkingHardSingleton { private static SimpleWorkingHardS ... 
- struts2中s:select标签的使用
			1.第一个例子: <s:select list="{'aa','bb','cc'}" theme="simple" headerKey="00& ... 
- iOS完全自学手册——[二]Hello World工程
			1.前言 写第二篇文章之前,我在想第二篇应该怎么写?后来觉得与其写Objective-C语言的相关语法,不如直接开始写个小项目.语法简单入门即可.因为,即便把语法看的很深到最后还是不一定能做项目,运用 ... 
- 【学习笔记】linux bash script
			1. sed sed 是一种流编辑器,它是文本处理中非常常用的工具,能够完美的配合正则表达式使用,功能非常强大. mkdir playground touch test.txt echo " ... 
- CAS优缺点
			cas优点:如一描述在并发量不是很高时cas机制会提高效率.cas缺点:1.cpu开销大,在高并发下,许多线程,更新一变量,多次更新不成功,循环反复,给cpu带来大量压力.2.只是一个变量的原子性操作 ... 
- Python基础8:列表推导式(list)字典推导式(dict) 集合推导式(set)
			推导式分为列表推导式(list),字典推导式(dict),集合推导式(set)三种 1.列表推导式也叫列表解析式.功能:是提供一种方便的列表创建方法,所以,列表解析式返回的是一个列表格式:用中括号括起 ... 
- (转)AIX下镜像制作与取消,更换硬盘问题
			AIX下镜像制作与取消,更换硬盘问题 ROOTVG做镜像问题: 下面命令全部在AIX5.4上运行通过 # lspv hdisk0 000a1ddc7f36a2f0 rootvg ... 
- 四、CLR执行程序集中代码和IL代码简介
			三.加载公共语言运行时中介绍了在安装了.Net Framework中加载公共语言运行时,公共语言运行时加载程序集的过程.以及通过vs stdio设置源码编译的目标平台的过程. 本问主要介绍公共语言加载 ... 
