zoukankan      html  css  js  c++  java
  • 《精通CSS:高级Web标准解决方案》读书笔记

    Author:chemandy



    章二、为样式找到应用目标

    1. 子选择器和相邻通报选择器,在IE7下,如果父元素与子元素间有注释,会产生错误。
    2. 层叠和特殊性,根据特殊性应用样式。内联>id>class>普通元素选择。
    3. css中导入样式@import url(路径);速度比链接样式慢。

    ---------------------------------------------------------------------------------------

    1. 设计css代码结构:
    一般样式
             主题样式
             reset样式
             链接
             标题
             其他元素
    辅助样式
             表单
             通知和错误
             一致的条目
    页面结构
             标题、页脚和导航
             布局
             其他页面结构元素
    页面组件
             各个页面
    覆盖

    /* @group general styles
    ----------------------------------------------------------------------*/

    /* @group helper styles
    ----------------------------------------------------------------------*/

    /* @group page structure
    ----------------------------------------------------------------------*/

    /* @group page components
    ----------------------------------------------------------------------*/

    /* @group overrides
    ----------------------------------------------------------------------*/
    2. 添加css自我提示
    3. 删除多余的注释,优化样式表。

    ---------------------------------------------------------------------------------------
    ---------------------------------------------------------------------------------------

    章四、背景图像效果

    1. 元素背景图像可以栖身于padding中。
    2. 图像百分比定位例:若指定垂直和水平位置都是20%,则子元素左上角20%的点定位于父元素左上20%的点。最好不要混合使用单位和关键字。
    3. 简单圆角处理:①固定宽度圆角框;②滑动门;③山顶角。
    4. CSS 3 处理圆角:①同一元素下设置多个背景;②border-radius属性;③border-image属性。
    5. 投影处理:①容器设置投影图片,img设负边距偏移;②Clagnut投影方法:img设置relative定位偏移。
    6. CSS 3 处理投影:Box-shadow属性,例:img { box-shadow:3px 3px 6px #666;},部分浏览器可能需要扩展才可以使用,如Safari(-webkit-),Firefox(-moz-)
    7. 不透明度处理:①属性opacity:0.8;针对IE使用filter:alpha(opacity=80);②使用RGBa方法:.alert { background-color: rgba(0,0,0,0.8); },其最后一位为opacity值。③使用png图片,IE6不支持,需使用条件注释引用一下代码:.Aimg { filter:progid:DXImageTransform.Microfoft.AlphaImageLoader(src='path',sizingMethod='crop'); }
    8. CSS 视差效果,多层png图像叠加情况下,设置水平偏移百分比可达效果。
    9. 图像替换:①FIR方法,将文字块用display:none;或visibility:hidden;隐藏;②Phark方法:对文字使用text-indent:-5000px;设置css背景图片;③sIFR(Flash方法,忽略)

    ---------------------------------------------------------------------------------------

    章五、对链接应用样式

    1. 设置链接样式次序:a:link, a:visited, a:hover, a:focus, a:active;识记:Lord Vader Hates Furry Animals.
    2. <a href="http://webname.com#id_name">some link</a>可以链接到某页的某个id上。CSS 3 允许设置:target伪类为目标元素设置样式。如: .comment:target{ background-color:yellow; }
    3. 利用属性选择符突出显示不同类型的链接。
    4. 翻转器实现:①利用a:hover(a设为block);②Pixy样式的翻转:同一图片包含link和hover的图片;③CSS精灵;④利用CSS 3实现翻转。

    ---------------------------------------------------------------------------------------

    章六、对列表应用样式和创建导航条

    1. 改变列表的项目符号最好用背景图片,因项目图像属性可控性差。
    2. 将锚链接<a>显示为block可以为css翻转器得到很好的兼容性。
    3. 应巧妙利用绝对定位的负值来实现元素的显隐。

    ---------------------------------------------------------------------------------------

    章七、对表单和数据表格应用样式

    1. 表格特有元素summay、caption、thead、tbody、tfoot、col、colgroup。
    2. 表单元素legend表现于个浏览器差异大,避免使用。
    (章七-略)

    ---------------------------------------------------------------------------------------

    章八、布局

    1. 网站整体居中,margin:0 auto;IE将text-align:center;误解为所有东西居中,可于body设置让其居中(无害hack)。
    2. 让父元素包含浮动的子元素三种方法:①添加清理的元素(会增加不必要的标记,尽量避免)。②让父元素浮动,并且使用某个元素(比如站点页脚)对它进行清理以便换行。③使用overflow:hidden技术(推荐)。
    3. 为每一个浮动元素加上display:inline;
    4. 布局:固定宽度布局(宽度都以像素布局)、流式布局(尺寸是以百分数而不是像素设置的)、弹性布局(相对于字号来设置元素宽度)。
    5. 弹性布局关键:设置基字号。大多数浏览器默认字号16px,基字号设置:body { font-size:65.5%; } ,这样1em=10px;

    ---------------------------------------------------------------------------------------
    ---------------------------------------------------------------------------------------

    章九、bug和修复bug

    捕捉bug
    CSS编辑器:SKEdit或CSS Edit,或通过CSS Validator等服务运行代码可以突出显示所有语法错误。
    1. 常见问题1:特殊性和分类次序的问题,即css样式层叠问题,可通过提高样式特殊性解决。
    2. 常见问题2:外边距叠加的问题,父子元素,若无边框或内边距,垂直外边距会发生叠加。

    ---------------------------------------------------------------------------------------

    捕捉bug的基本知识
    1. 使用FireBug、Firefox开发人员工具条。
    2. 用标准浏览器作主要的开发浏览器,再修复其他非标准浏览器(IE)的bug。
    3. 再非绝对必要的情况下避免使用hack。
    4. 隔离问题:在相关元素上应用边框或轮廓(代码直接加入、Web开发人员工具条轮廓选项、bookmarklet加入)
    5. 创建基本测试案例,重现bug所需最少量的html和css。注释css查明出错代码。
    6. 修复问题,而不是修复症状。
    7. 请求帮助。无法自行解决的问题,可以求助于活跃的css社区。

    ---------------------------------------------------------------------------------------

    IE Bug有关的现实引擎“拥有布局”
    1. IE表现与其他浏览器不同原因之一是,显示引擎使用一个称为“布局”(layout)的内部概念。
    2. IE显示引擎为减少浏览器处理开销,用布局概念控制元素尺寸和定位。由部分拥有“拥有布局”(have layout)的元素负责本身及其子元素的尺寸和设置定位。
    3. 拥有布局的元素包括:body, html(标准模式中), table, tr, td, img, hr, input, select, textarea, button, iframe, embed, object, applet, marquee。
    4. 设置一下css属性会自动使元素拥有布局。Float:left或right、display:inline-block、任何值、zoom:任何值(MS属性,不通过验证)、writing-mode:tb-rl(MS属性,不通过验证)。
    5. IE7中,以下属性页成了布局触发器:overflow:hidd、scroll或auto、min-任何值、max-除none外的任何值。
    6. 布局的效果:
    段落拥有布局会被限制成矩形,而阻止文本围绕浮动元素。
    拥有布局的元素确定自身尺寸的问题,IE中的width实际上更像是min-widht。
    拥有布局的元素不会收缩。
    布局元素对浮动进行自动清理。
    相对定位的元素没有布局。
    在拥有布局的元素之间外边距不叠加。
    在没有布局的会计链接上,单击区域只覆盖文本。
    在滚动时,列表项上的背景图像间接性的显示和消失。

    ---------------------------------------------------------------------------------------

    Bug解决方法
    1. IE条件注释
    ①制定一种特定IE浏览器(x=6\7\8\9)
    <!-- [if IE X]>
        <link rel="stylesheet" type="text/css" href="/css/ie.css" />
    <![endif]-->
    ②指定一组IE浏览器,如IE5和IE5.5
    <!-- [if lt IE 6]
        <link rel="sytlesheet" type="text/css" href="/css/ie5x.css" />
    <![endif]-->
    ③对IE隐藏样式
    <!-- [if !IE]>-->
        <link rel="stylesheet" type="text/css" herf="/css/advanced.css" />
    <!--<![endif]-->
    ④对IE5.x隐藏样式
    <!-- [if  gte IE 6]><!-->
        <link rel="stylesheet" type="text/css" herf="/css/modern.css" />
    <!--<![endif]-->
    2. 能不用hack最好不用hack,过于依赖解析bug的过滤器一旦bug修复会破坏网页布局。
    3. 如需使用hack需要集中标注,或单独建立一个hack的css文件。
    4. 星号HTML hack过滤器,应用于IE6.
    5. 使用子选择器对IE6隐藏css,如html>body { }.

    ---------------------------------------------------------------------------------------

    常见bug及其修复方法
    1. IE6下,双边距浮动bug
    出现条件:元素浮动并有外边距。
    解决方法:每当具有水平外边距的元素需要浮动时,应该自然的将display属性设置为inline。
    2. IE6下,3像素文本偏移bug
    出现条件:文本与浮动元素相邻。
    解决方法:仅对IE6作用以下css:p{ height:1%; margin-left:0;} .myFloat { margin-right:3px; }
    如果浮动的是图片,则设置为img.myFloat { margin:0; }
    3. IE6下,重复字符bug
    出现条件:在一些列浮动元素的第一个和最后一个元素之间有多个注释时。
    解决方法:设置右外边距从最后一个浮动元素上去掉3像素,或者使容器扩大3像素。这可能造成ie7出现问题,最好是将注释删掉。
    4. IE6下,“藏猫猫”bug(peek-a-boo)
    出现条件:一个浮动元素后面跟着一些浮动元素,然后是一个清理元素,所有这些元素都包含在一个设置了背景颜色或者图像的父元素中。如果清理元素碰到了浮动元素,那么中间的非浮动元素看起来消失了,隐藏到父元素的背景颜色或图像后面,只有刷新才能重新出现。
    解决方法:①去掉父元素的背景或颜色。②清理元素与浮动元素的接触。③容器元素应用特定尺寸。④容器制定行高。⑤浮动元素和容器元素的position属性设置为relative。
    5. IE6下,相对容器中的绝对定位
    出现原因:相对定位元素没有获得IE/Win的内部hasLayoout属性。因此不能创建新的定位上下文,所有绝对定位元素相对于视口进行定位。
    解决方法:逼使相对定位容器拥有布局。用条件注释使相对容器拥有高度。

    ---------------------------------------------------------------------------------------


    一、杂
    1. outline (轮廓)是绘制于元素周围的一条线,位于边框边缘的外围,可起到突出元素的作用。轮廓线不会占据空间,也不一定是矩形。
    2. quotes 属性设置嵌套引用(embedded quotation)的引号类型。

    二、实例研究Roma Italia
    1. CSS分块注释,添加IE专用CSS,@import注入样式表。
    2. 良好的注释,各大块结束添加注释。
    3. 浮动清除使用:after伪类结合display:none;解决。
    4. 为表单添加fieldset和legend用以通过w3c认证。legend样式难以控制,使用display:none;隐藏。
    5. 表单为通过w3c认证必须有fieldset、legend或div嵌套。

    三、实例研究Climb the Mountains
    1. 可访问性:提供非css用户快速跳转导航。
    2. 略

  • 相关阅读:
    【代码笔记】iOS-判断是否是模拟机
    【代码笔记】iOS-拍照动画
    【代码笔记】iOS-轮询弹出框
    【代码笔记】iOS-iCarouselDemo
    【代码笔记】iOS-UIScrollerView里有两个tableView
    【代码笔记】iOS-两个时间字符串的比较
    【代码笔记】iOS-利用图片序列创建动态图片效果
    【代码笔记】iOS-离线地图
    【代码笔记】iOS-看图听声音
    【代码笔记】iOS-看图听故事
  • 原文地址:https://www.cnblogs.com/chemandy/p/1998131.html
Copyright © 2011-2022 走看看