CSS的常见问题
1.css的编码风格
多行式:可读性越强,但是CSS文件的行数过多,影响开发速度,增大CSS文件的大小
一行式:可读性稍差,有效减少CSS文件的行数,有利于提高开发速度,减小CSS文件的大小
2.id和class
区别:1)同一个网页,相同的id只能出现一次,不可重复,而class可以任意出现多次
2)id的权重选择符权重为100,而class的选择符权重为10
3)原生JS提供getElementById()方法,支持通过id对应到相关的HTMLLIElement,但原生JS不支持通过class对应到相关的HTMLLIElement
建议:尽量使用class,少用id
3.CSS hack:使CSS代码兼容不同的浏览器
1.IE条件注释法
只在IE下生效
<!--[if IE]>
<link type="text/css" href="test.css" rel="stylesheet">
<![endif]-->
只在IE 6下生效
<!--[if IE 6]>
<link type="text/css" href="test.css" rel="stylesheet">
<![endif]-->
缺点:将同一CSS选择符下的样式分散到三个文件夹去控制,增加开发和维护成本
2.选择符前缀法
原理:在CSS选择符前加一些只有特定浏览器才能识别的前缀,从而某些样式只有特定浏览器才能识别
例如"*html"前缀只对IE6生效,“*+html"前缀只对IE7生效
<style type="text/css>
.test{width:80px;} /*IE6,IE7,IE8*/
*html .test{width:60px;} /*only for IE6*/
*+html .test{width:70px;} /*only for IE7*/
</style>
选择符前缀法不能用于内联样式
缺点:向后兼容存在风险
3.样式属性前缀法
原理:在样式的属性名前加前缀,这些前缀只在特定的浏览器下才生效
例如"_"只在IE6下生效,"*"在IE6 和IE7下生效
<style type="text/css>
.test{width:80px;*width:70px;_width:60px;}
</style>
优点:比选择符前缀法聚合程度更高,代码更精简,可维护性很强
缺点:向后兼容存在风险
总结:IE条件注释法在理论上是首推的hack方法,但是它不利于开发和维护,所以事实上最流行的hack方式是选择符前缀法和样式属性前缀法,可以根据需要选择使用
4.解决超链接访问后hover样式不出现的问题
关于a标签的四种状态的排序问题,love hate原则:即l(link)ov(visited)e h(hover)a(active)te
5.hasLayout
是IE浏览器专有的属性,用于CSS的解析引擎。有时候在IE下一些复杂的CSS设置解析起来会出现Bug,其原因可能与hasLayout没有被自动触发有关,我们通过一些技巧,手动触发hasLayout属性就可以解决Bug了。
6.块级元素和行内元素的区别
块级元素:1.独占一行
2.宽度自动填满其父级元素宽度
3.支持所有CSS命令
行内元素:1.不会独占一行
2.相邻的行内元素会排列在同一行里,直到一行排不下,才会换行
3.宽度随元素的内容而变化
4.设置宽高属性无效
5.不支持上下的margin
7.display:inline-block和hasLayout
Inline-block的特点
- 块在一行显示;
- 行内属性标签支持宽高;
- 没有宽度的时候内容撑开宽度
1. 对于p标签设置display:inline-block,Firefox和IE 8都可以正常解析display:inline-block,而IE6和IE7不支持,考虑兼容性,必须舍弃这种用法
2.对于span,img,button标签,IE8和Firefox正常显示,IE6和IE7中span标签也有长宽,并且显示在一行内,display:inline-block并不是真的在IE6和IE7下生效,只是令span触发了hasLayout属性,其效果和设置zoom:1是一模一样的
实现IE6、IE7、IE8和Firefox都兼容的display:inline-block的应用,存在一些问题:
1.它只对行内元素实现display:inline-block;如果是块级元素就不行,限制我们只能使用行内元素的标签。
2.用到针对IE的hack,*vertical-align,这是不好的,能不使用hack就不要使用。
8.relative、absolute和float
文档流:z-index:0
relative特点:1.脱离文档流(z-index值大于0),但是会保留自己在z-index:0层的占位
2.如果没有定位偏移量,对元素本身没有任何影响
3.不影响元素本身的特性
4.提升层级
5.相对于自己在z-index:0层的位置进行定位
absolute的特点:1.完全脱离文档流,不会保留自己在z-index:0层的占位
2.相对于自己最近的一个设置了position:relative和position:absolute的祖先元素,如果祖先元素都没有设置position:relative和position:absolute,那么就 相对于body元素进行定位
float的特点:1.元素在z-index:0层排列
2.改变正常的文档流排列,影响到周围元素
注意:position:absolute和float会隐式的改变display类型,不论之前什么类型的元素(display:none除外),只要设置了position:absolute和float:left或者float:right中的任意一个,都会让元素以display:inline-block的方式显示:可以设置宽高,块在一行显示,没有宽度的时候内容撑开宽度。就算我们显式地设置display:inline 或者display:block,也仍然无效,(float在IE6 下的双边距bug就是利用添加display:inline来解决)。position:relative不会隐式改变display类型
CSS的常见问题的更多相关文章
- CSS兼容性常见问题总结
DIV+CSS设计IE6.IE7.FF 兼容性 DIV+CSS网页布局这是一种趋势,我也开始顺应这股趋势了,不过在使用DIV+CSS网站设计的时候,应该注意css样式兼容不同浏览器问题,特别是对完全使 ...
- CSS不常见问题汇总
写css有一段时间了,其间也遇到一些问题,跟大家分享一下 IE10+滚动条自动以藏问题,导致滚动部分页面看起来不正常 html, body {-ms-overflow-style: scrollbar ...
- CSS效果常见问题
详细解答参见上篇博客 问题1.如何用 div 画一个 xxx box-shadow 无限投影 (堆叠成复杂图案) ::before ::after 问题2.如何产生不占空间的边框 1.box-shad ...
- 【CSS】常见问题集锦
position=absolute 时,定位的父元素变成了body而不是父div?原因:如果父div的position为非static,则相对父div.参考:http://www.jianshu.co ...
- 两天学会css基础(二)
接上一篇博客,还有css中的两个重要知识点没有说到,就是元素的浮动与定位. 第三部分:元素的浮动与清除 这部分的内容之前的博客已总结过.请查看css中的浮动与三种清除浮动的方法这篇文章. 浮动在网页中 ...
- 『编写高质量代码Web前端开发修炼手册』读书笔记--高质量的CSS
1.怪异模式和DTD 标准模式:浏览器根据规范表现页面 怪异模式:模拟老浏览器行为防止老站点无法工作(为了兼容老式浏览器的代码),如果漏写DTD(Document Type Definition文档定 ...
- 前端入门-day2(常见css问题及解答)
写在前面 今天是入门前端的day2, 小伙伴们应该已经看了一些HTML的基础和CSS的基础了,是不是遇到了很多关于CSS的问题呢.因为HTML很少有太复杂的问题,所以直接写一篇关于CSS的常见问题及解 ...
- [读书笔记] Web 前端开发修炼之道
原创地址:http://www.cnblogs.com/bnbqian/p/3735565.html 转载请注明出处 今天我们要读的书是Web 前端开发修炼之道 第1章 从网站重构说起 1.1 糟糕的 ...
- 初识 BFC、 IFC、GFC、FFC
首先本文中介绍的 BFC. IFC.GFC.FFC 均为 CSS 中常见问题的解读,如没兴趣,可以绕道了. 然后在介绍这么多的 *FC 之前,我们得了解 一下 Box 和 Formatting Con ...
随机推荐
- struts2(二)之配置文件详解与结果视图
前言 前面介绍了struts2的一个程序的大概流程,还有它的配置文件. 一.struts.xml文件元素详解 1.1.package元素 1)作用 在struts2的配置文件中引入了面向对象思想,使用 ...
- Strange fuction
Problem Description Now, here is a fuction: F(x) = 6 * x^7+8*x^6+7*x^3+5*x^2-y*x (0 <= x <=1 ...
- 面向亿万级用户的QQ一般做什么?——兴趣部落的Web同构直出分享
作者:李强,腾讯web开发工程师 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. 原文链接:http://wetest.qq.com/lab/view/348.html 一.什么是同构 ...
- 使用SQLPLUS创建用户名和表空间
用sqlplus为oracle创建用户和表空间用sqlplus为oracle创建用户和表空间用Oracle10g自带的企业管理器或PL/SQL图形化的方法创建表空间和用户以及分配权限是相对比较简单的, ...
- whonix官网部分翻译
Whonix:一个高安全的方式来Surfing the Internet Whonix是一个桌面操作系统,被设计用于高级安全和隐私.It realistically addresses attacks ...
- Owin中间件动手玩
摘要:本文目的是了解Owin基本原理.讲述如何从控制台创建一个自宿主的OwinHost,然后再编写一两个中间件 准备工作 首先通过VisualStudio创建一个控制台应用 然后添加Owin的Nuge ...
- [转载] PHP工作模型与运行机制
转载自http://www.nowamagic.net/librarys/veda/detail/350 PHP的工作模型非常特殊.从某种程度上说,PHP和ASP.ASP.NET.JSP/Servle ...
- node.js安装——Windows7系统下的安装及其环境部署——特别详细
作为一个前端的菜鸟同学,之间也没学过什么框架,目前公司做项目,所用到的webpack+node.js+vue. 首先,关于node的环境部署方面,建议官网安装node.js,最好不要安装非稳定版的版本 ...
- IIS发布网站浏览之后看到的是文件目录 & Internal Server Error 处理程序“ExtensionlessUrlHandler-ISAPI-4.0_64bit”在其模块列表中有一个错误模块“IsapiModule” 解决方法 & App_global.asax.pduxejp_.dll”--“拒绝访问。 ”
Q:IIS发布网站浏览之后看到的是文件目录 A:它出现了一个说到.NET4.0 更高框架什么的错误,所以我将 .NTE CRL版本由4.0改为2.0了,改为2.0后就出现了只能浏览文件目录了.改为4. ...
- 使用Python操作excel文件
使用的类库 pip install openpyxl 操作实现 工作簿操作 # coding: utf-8 from openpyxl import Workbook # 创建一个excel工作簿 w ...