布局与兼容性

CSS布局


版心和布局流程

为什么要应用布局?

阅读报纸时容易发现,虽然报纸中的内容很多,但是经过合理地排版,版面依然清晰、易读。同样,在制作网页时,要想使页面结构清晰、有条理,也需要对网页进行“排版”

版心

“版心”是指网页中主体内容所在的区域。一般在浏览器窗口中水平居中显示,常见的宽度值为960px、980px、1000px等





布局流程

1、确定页面的版心。

2、分析页面中的行模块,以及每个行模块中的列模块。

3、运用盒子模型的原理,通过DIV+CSS布局来控制网页的各个模块。

单列布局

“单列布局”是网页布局的基础,所有复杂的布局都是在此基础上演变而来的。

两列布局


“两列布局”和“一列布局”类似,只是网页内容被分为了左右两部分,通过这样的分割,打破了统一布局的呆板,让页面看起来更加活跃。

三列布局

对于一些大型网站,特别是电子商务类网站,由于内容分类较多,通常需要采用“三列布局”的页面布局方式

通栏布局


为了网站的美观,网页中的一些模块,例如,头部、导航、焦点图或页面底部等经常需要通栏显示

注意:通栏布局的关键在于在相应模块的外面添加一层div,并且将外层div的宽度设置为100%。

网页模块命名规范


避免使用中文字符命名(例如id=“导航栏”)。

不能以数字开头命名(例如id=“1nav”)。

不能占用关键字(例如id=“h3”)。

用最少的字母达到最容易理解的意义。





驼峰式命名:除了第一个单词外后面的单词首写字母都要大写(例如partOne)。

帕斯卡命名:每一个单词之间用“_”连接(例如content_one)。






header

内容
content/container


footer

导航
nav

侧栏
sidebar

栏目
column

左右中
left right center

登录条
loginbar

标志
logo

广告
banner

页面主体
main

浏览器兼容性


CSS Hack


选择器Hack

为什么要调试浏览器的兼容性问题?

由于各浏览器对页面的解析不同,会导致页面在不同浏览器中显示的样式不一致,为了保持页面的统一,经常需要对浏览器进行兼容性问题的调试。

CSS选择器Hack是指通过在CSS选择器的前面,加上一些只有特定浏览器才能识别的Hack前缀,来控制不同的CSS样式。

选择器Hack分为以下几类:





(1)IE6及IE6以下版本识别的选择器Hack

其基本语法如下:

* html 选择器{样式代码}

(2)IE7识别的选择器Hack

其基本语法如下:

*+html 选择器{样式代码}

选择器Hack写法
针对于的浏览器

@media screen\9{body { background: red; }}
只对IE6/7生效

@media \0screen {body { background: red; }}
只对IE8生效

@media \0screen\,screen\9{body { background: blue; }}
只对IE6/7/8有效

@media screen\0 {body { background: green; }}
只对IE8/9/10有效

@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {body { background: orange; }}
只对IE10有效

属性Hack

是指在CSS属性名的前面,加上一些只有特定浏览器才能识别的Hack前缀。





属性Hack分为以下几类:

(1)IE6(含)以下版本识别的属性Hack,其基本语法如下:

 _属性:样式代码;

(2)IE7(含)以下版本识别的属性Hack,其基本语法如下:

+或*属性: 样式代码;







CSS属性Hack(前缀)
针对的浏览器

_color:red;
IE6及其以下的版本

*color:red ;或者 +color:red;
IE7及其以下的版本

CSS属性Hack(后缀)
针对的浏览器

color:red\9;
IE6/IE7/IE8/IE9/IE10版本

color:red\0;
IE8/IE9/IE10版本

color:red\9\0;
IE9/IE10

color:red!important
IE7/IE8/IE9/IE10及其他非IE浏览器

IE条件注释语句


是IE浏览器专有的Hack,针对不同的IE浏览器,书写方法不同

(1)判断浏览器类型的条件注释语句

<!--[if IE]>

只能被 IE 识别;

<![endif]-->

第一行的英文字母“IE”代表浏览器的类型,表示该条件注释语句只能被IE浏览器识别

(2)判断IE版本的条件注释语句

<!--[if IE 7]>

只能被 IE7 识别;

<![endif]-->

第一行的数字代表IE的版本号,表示该注释语句只能被当前IE版本识别。

IE条件注释语句
针对的浏览器版本

<!--[if lt IE 7]>内容<![endif]-->  
  IE7 以下版本

<!--[if lte IE 7]>内容<![endif]-->
IE7及以下版本(包含IE7)

<!--[if gt IE 7]>内容<![endif]-->
IE7 以上版本

<!--[if gte IE 7]>内容<![endif]-->
IE7及以上版本(包含IE7)

<!--[if !IE 7]>内容<![endif]-->
非IE7版本

<!--[if !IE]><!-->您使用不是 Internet Explorer<!--<![endif]-->
非IE浏览器

使用!important解决高度自适应问题


制作网页时,当盒子中的内容超过了盒子的宽高时,在标准浏览器下内容会溢出,但是在IE6中盒子会自适应内容的大小。这是就需要通过!important解决IE6高度自适应问题。



div{

height:auto!important;

height:30px;

min-height:30px;

width:500px;

border:1px solid #000;

font-size:50px;

}

!important用于提升优先级,浏览器会优先执行“height:auto!important;”

常见的IE6兼容性问题


IE6中浮动元素的双倍外边距问题


当对浮动的元素应用左外边距或右外边距(margin-left或margin-right)时,在IE6浏览器中,元素对应的左外边距或右外边距将是所设置值的两倍。

解决方法:为浮动块元素定义“_display:inline;”样式来解决。

IE6不支持透明图像问题


IE6浏览器并不能很好地支持透明图片,如png(24位)、gif等格式的透明图片。





解决方法:借助微软提供的js文件来解决。

IE6中图片底部会有像素间隙问题


解决方法:

1、将<img>标记与</div>标记放在同一行。

2、为<img />定义“display:block;”样式。

IE6中元素最小高度的问题


由于IE6浏览器有默认的最小像素高度,因此它无法识别19px以下的高度值

解决方法:

1、给该盒子指定“overflow:hidden;”样式。

2、给该盒子指定“font-size:0;”样式。

IE6显示多余字符问题


在IE6中,当浮动元素之间加入HTML注释时,会产生多余字符

解决方法:

1、去掉HTML注释。

2、不设置浮动div的宽度。

3、在产生多余字符的那个元素的CSS样式中添加“position:relative;”样式。

IE6中3像素间距Bug


在IE6中,当文本或其他非浮动元素跟在一个浮动元素之后时,文本或其他非浮动元素与浮动元素之间会多出3像素的间距。





解决方法:对盒子运用负外边距的方法来解决。

HTML&CSS精选笔记_布局与兼容性的更多相关文章

  1. HTML&CSS精选笔记_表格与表单

    表格与表单 表格标记 创建表格 要想创建表格,就需要使用表格相关的标记 <table>     <tr>     <td>单元格内的文字</td>   ...

  2. HTML&CSS精选笔记_盒子模型

    盒子模型 认识盒子模型 所谓盒子模型就是把HTML页面中的元素看作是一个矩形的盒子,也就是一个盛装内容的容器.每个矩形都由元素的内容.内边距(padding).边框(border)和外边距(margi ...

  3. HTML&CSS精选笔记_浮动与定位

    浮动与定位 元素的浮动 元素的浮动属性float 什么是浮动? 元素的浮动是指设置了浮动属性的元素会脱离标准文档流的控制,移动到其父元素中指定位置的过程. 如何定义浮动? 在CSS中,通过float属 ...

  4. HTML&CSS精选笔记_列表与超链接

    列表与超链接 列表标记 无序列表ul 无序列表的各个列表项之间没有顺序级别之分,是并列的 <ul> <li>列表项1</li> <li>列表项2< ...

  5. HTML&CSS精选笔记_HTML与CSS网页设计概述

    HTML与CSS网页设计概述 Web基本概念 认识网页 网页主要由文字.图像和超链接等元素构成.当然,除了这些元素,网页中还可以包含音频.视频以及Flash等. 名词解释 Internet网络 就是通 ...

  6. CSS 学习笔记 - Flex 布局

    传统布局方式的局限性 传统的网页布局方式,采用 display + position + float 的方式来实现.这种方式,无法实现一些复杂的布局,并且在实现某些布局时,会有一些局限性. 比如,最常 ...

  7. HTML&CSS精选笔记_CSS入门

    CSS入门 CSS核心基础 CSS样式规则 选择器{属性1:属性值1; 属性2:属性值2; 属性3:属性值3;} CSS代码结构中的特点 CSS样式中的选择器严格区分大小写,属性和值不区分大小写,按照 ...

  8. HTML&CSS精选笔记_CSS高级技巧

    CSS高级技巧 CSS精灵技术 需求分析 CSS精灵是一种处理网页背景图像的方式.它将一个页面涉及到的所有零星背景图像都集中到一张大图中去,然后将大图应用于网页,这样,当用户访问该页面时,只需向服务发 ...

  9. HTML&CSS精选笔记_HTML入门

    HTML入门 什么是HTML HTML基本文档格式 HTML文档的基本格式,其中主要包括<!DOCTYPE>文档类型声明.<html>根标记.<head>头部标记. ...

随机推荐

  1. Python 2.7.9 Demo - 019.01.CRUD oracle by cx_Oracle

    select #coding=utf-8 #!/usr/bin/python import cx_Oracle; conn = None; cursor = None; try: conn = cx_ ...

  2. 利用ForgeryPy生成虚拟数据

    在程序研发过程中,我们往往需要大量的虚拟实验数据.Python中有多个包可以用于生成虚拟数据,其中功能较为完善的是ForgeryPy. 1 安装 采用pip进行安装: pip install Forg ...

  3. Rokid开发者社区skill之【历史上的今天】之简介+玩法+设计+实现+心得

    Skill简介: 来源:好奇心.探索欲.趣味性: 资源:百度百科: 方式:实时获取,自动更新: 技能玩法: 想要进入历史上的今天这个skill,则对若琪说:若琪,打开历史上的今天. 想要了解某天的历史 ...

  4. 【Java】创建线程对象两种方式

    1.继承Thread类,重载run方法: Thread t = new Thread(new Runnable() { @Override public void run() { // TODO Au ...

  5. js中Math.round、parseInt、Math.floor和Math.ceil小数取整小结【转】

    [摘要:之前常常正在代码中看到Math.round.parseInt.Math.floor战Math.ceil那四个函数,固然晓得效果皆能够返回一个整数,然则对他们四者的差别照样没有太清晰,本日便做一 ...

  6. POST请求中,往URL传递数组

    POST请求中,前端/客户端需要手动拼接URL,然后走接口跟后端交互. 若想传递数组,可以按照如下的拼接形式: &materialsTypeId=11&materialsTypeId= ...

  7. MySQL LIMIT 如何改写成Oracle limit

    mysql代码 SELECT * FROM tablename LIMIT 100,15 首先,Oracle是不支持limit的.个人感觉分页方面mysql比Oracle要好些.处理代码如下: sel ...

  8. tar -h 参数

    1.1.1 tar命令参数-h,-h参数会把软链接指向的文件也打包. [root@ob2 mytmp]# ll total 8 -rw-r--r--. 1 root root 910 Aug 12 2 ...

  9. 树莓派 安装 刷Android Things 小结

    一句话说,Android Things就是让开发者可以使用Android开发工具开发嵌入式设备. If you can build an app, you can build a device. 只要 ...

  10. Specified VM install not found: type Standard VM, name jdk1.7

    网上抄袭来抄袭去,都说是将“workspace /.metadata/.plugins/org.eclipse.debug.core/.launches/”下的文件都删除掉. 的确,删除了解决问题了, ...