当前位置:Gxlcms > html代码 > CSS3秘笈第三版涵盖HTML5学习笔记13~17章_html/css_WEB-ITnose

CSS3秘笈第三版涵盖HTML5学习笔记13~17章_html/css_WEB-ITnose

时间:2021-07-01 10:21:17 帮助过:12人阅读

第13章,构建基于浮动的布局

使用的是float(浮动)属性

注:float:none值将取消所有浮动,通常只用来取消元素中已经应用的浮动。

切记:不需要给正文的div设计宽度,即使设计成固定宽度也不用

用浮动进行布局

LayoutGala网站( http://blog.html.it/layoutgala/)上提供了40种不同的CSS设计,但大多只是基本框架,里面只有

标签及其定位用的CSS代码

布局生成器,Cridinator( http://gridinator.com)提供了简单的工具,用以创建复杂的多列网格系统

在浮动元素中浮动元素,会在列中增加列。

克服浮动问题

清除浮动和保持浮动

footer{    clear:both;}

清除元素两边的浮动

clear属性值:left,right,both

在非浮动的外围元素如

标签中浮动元素,有可能造成当浮动元素高于div里面的其他内容时,从外围元素的底部凸出来,

解决方法:

1、在外围

底部添加一个清除元素

2、浮动外围元素

3、利用overflow:hidden,在外围元素中使用

4、使用Micro Clear Fix

多列布局

CSS3引入了multicolumn layout(多列布局)模块,IE9及其更早版本不支持,multicolumns属性可以在W3C官网上找到: www.w3.org/TR/css3-multicol/,用以创建和预览多列的在线工具: www.aaronlumsden.com/multicol/

第14章,响应式Web设计

响应式Web设计基础知识

响应式Web设计简称RWD。

Ethan Marcotte在他的著作Responsive Web Design中详细讲解了RWD的步骤,原稿: http://www.alistapart.com/articles/responsive-web-design

RWD中结合了三大理念:用于布局的弹性网络、用于图片和视频的弹性媒体、为不同屏幕宽度创建不同样式的CSS媒体查询

在网页中添加以下代码(标签上方就是它最佳位置)可以忽略手机浏览器对于网页的自动缩放: </p> <p class="sycode"> <p class="sycode"> <pre class="precsshui"><meta name="viewport" content="width=device-width"></script></pre> </p> </p> <p class="sycode"> CSS的@viewport也可以实现同样的功能,应该将这个代码放在所有样式表前,但目前还有很多浏览器不支持,需要添加供应商前缀才行 </p> <p class="sycode"> <p class="sycode"> <pre class="precsshui">@viewport{ width:device-width; }</script></pre> </p> </p> <h2>媒体查询</h2> </p> <p class="sycode"> <p class="sycode"> 可以根据目标浏览器的宽高给网页分配样式 </p> <h3>使用媒体查询的策略</h3> <p class="sycode"> 1、调整列 </p> <p class="sycode"> 2、弹性宽度 </p> <p class="sycode"> 3、缩进空白空间 </p> <p class="sycode"> 4、调整字号 </p> <p class="sycode"> 5、修改导航菜单 </p> <p class="sycode"> 6、在手持设备上隐藏内容 </p> <p class="sycode"> 7、使用背景图片 </p> <h3>创建断点</h3> <p class="sycode"> 媒体查询可给告诉浏览器在特定条件下使用特定的样式,特定条件通常被称为断点 </p> <p class="sycode"> 如何进行断点设置呢?简单做法是在网页中打开一个网页,然后使用浏览器窗口句柄,让窗口变窄,在某个点时设计将会变得很难看,这时可以设置一个断点,如此循环。一般来说会设计3个断点,一个针对智能手机,一个针对平板电脑,一个针对桌面型浏览器 </p> <h3>桌面型优先还是手机版优先</h3> </p> <p class="sycode"> <h3>创建媒体查询</h3> <p class="sycode"> <p class="sycode"> <pre class="precsshui"></script></pre> </p> </p> <p class="sycode"> 只是新增了media属性,设定条件 </p> <p class="sycode"> IE8及更早版本不支持,通过在文档<head>中添加一些js,也可以让旧版IE支持媒体查询,从 http://tinyurl.com/7w49a6z下载respond.js,引入: </p> <p class="sycode"> <p class="sycode"> <pre class="precsshui"><!--[if lte IE 8> <script src="respond.min.js"></ script><![endif]--></script></pre> </p> </p> <p class="sycode"> 这种只针对精确的查询,最好使用范围值,即借助max-width(小于等于)和min-width(大于等于) </p> <p class="sycode"> 关于浏览器查询信息: www.w3.org/TR/css3-mediaqueries </p> <h2>弹性网格</h2> <p class="sycode"> HTML源码的顺序的重要性 </p> <p class="sycode"> 重置盒模型 </p> <p class="sycode"> 将固定宽度转换成弹性网格 </p> <h2>流式图片</h2> <p class="sycode"> 虽然弹性设计中列会随着浏览器窗口变小而收缩,但图片不会,这就可能导致图片溢出边界 </p> <p class="sycode"> 可以使用如下方式使图片变成具有弹性: </p> <p class="sycode"> 1、首先,添加样式: </p> <p class="sycode"> <p class="sycode"> <pre class="precsshui">img { max-width:100; }</script></pre> </p> </p> <p class="sycode"> 2、将HTML中所有img标签的height和width属性删除 </p> <h3>流式图片不足</h3> <p class="sycode"> 图片会伸展到列的100%宽度,这就可能发生拉伸超出它的自然宽度,发生形变和失真。 </p> </p> <p class="sycode"> 第15章,定位网页上的元素 <h2>定位属性的功能</h2> <p class="sycode"> CSS的position属性可以控制Web浏览器如何以及在和何处显示特定的元素 </p> <p class="sycode"> CSS提供了4种类型的定位: </p> <p class="sycode"> 绝对定位:通过以pixel、em或percentage为单位设定元素的左右上下方的位置对它进行定位。 </p> <p class="sycode"> 注:不要在一个样式中同时设定float属性和任何一种定位,除了静态定位和相对定位,absolute和fixed也不能和float属性同时应用于同一个元素 </p> <p class="sycode"> 相对定位:相对于它在HTML流中的当前位置进行定位,与绝对定位不同,其他元素并不会占据相对定位元素原来在HTML中所处的位置,相对定位最大的好处不是移动元素,而是给它内部绝对定位元素设定一个新的参照点 </p> <p class="sycode"> 固定定位:固定定位元素会被锁定在屏幕某个位置上。 </p> <p class="sycode"> 静态定位:只是表示网页内容将遵循正常从上到下的HTML流 </p> <p class="sycode"> position属性可以改变任何一个元素的定位,使用以下4个关键字:static、absolute、relative、fixed </p> <p class="sycode"> 注:静态定位元素将不支持以下要讨论的任何一种定位值 </p> </p> <p class="sycode"> <h2>设置定位值</h2> <p class="sycode"> Web浏览器窗口显示区也被称为检视区(viewport),有上、下、左、右4条边,对应CSS属性top、bottom、left、right </p> <p class="sycode"> position属性后面还有更多种属性(top、bottom、left、right) </p> <p class="sycode"> 利用绝对定位在网页上定位元素时,它的具体位置均取决于相关元素在其它标签中所嵌套的位置: </p> <p class="sycode"> 1、如果一个标签的位置是绝对定位的,且它又不在其他任何设定了absolute、relative、fixed定位的标签里面,那它就是相对于浏览器窗口进行定位 </p> <p class="sycode"> 2、如果一个标签处在另一个设定了absolute、relative、fixed定位的标签里,那它就是相对于另一个元素的边框进行定位 </p> <p class="sycode"> 注:在CSS中,术语relative不完全等同于它的本义,可以解读为“相对于我”的意思。即当对一个标签设置relative定位时,意思是“我内部所有定位元素应该相对于我的位置进行定位” </p> <h2>堆叠元素</h2> <p class="sycode"> 一般来讲,定位元素重叠时的堆叠顺序是按照它们在网页HTML代码中的顺序来决定,但可以通过CSS属性z-index来控制定位元素的堆叠顺序: </p> <p class="sycode"> z-index:3; 这个值为数字,数字越大,越接近堆叠顶部,即出现在HTML页面的前面,还可以使用负值,将一个元素定位在其父元素或者其任意一个祖先元素之下。 </p> <p class="sycode"> 注:IE7及更早版本不支持,z-index最大值是2147483647 </p> </p> <p class="sycode"> <h2>隐藏部分网页</h2> <p class="sycode"> 绝对定位元素时常用CSS属性visibility(可见性),隐藏部分网页或显示隐藏部分visibility:hidden(隐藏),visibility:visible(可见) </p> <p class="sycode"> visibility:hidden与display:none类似,不过visibility会在HTML网页留下空白,display不会 </p> <p class="sycode"> opacity属性也可以隐藏元素:opacity:0,完全不可见,opacity:1,完全可见 </p> <h2>强大的定位策略</h2> <p class="sycode"> 综合使用position的定位 </p> </p> <p class="sycode"> 第四部分----CSS高级技术 第16章,设计打印页面的CSS技术 </p> <p class="sycode"> <h2>Media样式表的作用</h2> <p class="sycode"> CSS支持10种不同的媒体类型:all、braille、embossed、handheld、print、projection、screen、speech、tty、tv </p> <p class="sycode"> 应特别注意的3种媒体类型: </p> <p class="sycode"> all:适用于每一种设备,当把样式嵌入或通过外部样式表进行链接时,用的就是这种方式 </p> <p class="sycode"> screen:只适用于显示器 </p> <p class="sycode"> print:只适用于打印网页 </p> <h2>给外部样式表指定媒体类型</h2> <p class="sycode"> <p class="sycode"> <pre class="precsshui"></script></pre> </p> </p> <p class="sycode"> 技术上来说:@import url(print.css) print;也是可以的,只是IE不支持 </p> <h3>在样式表中指定媒体类型</h3> <p class="sycode"> 在样式表中使用以下语句: </p> </p> <p class="sycode"> <p class="sycode"> <pre class="precsshui">@media print{ /*put your styles for printer in here*/}</script></pre> </p> <h2>重写文本样式</h2> <p class="sycode"> 使用pixel或em单位对于浏览器而言可能很好,但对打印机并不起作用。浏览器会根据自己的解释将其转换成打印的单位:点(pt),不同浏览器解释不一样,所以最好能够设置成针对打印机的样式使用pt作为单位 </p> <h2>定义打印背景</h2> <p class="sycode"> 1、取消背景元素 </p> <p class="sycode"> 使用background:white;可直接将背景设置成白色,并取消图片 </p> <p class="sycode"> 2、保留背景元素 </p> <p class="sycode"> 3、给打印添加分页符 </p> <p class="sycode"> 使用page-break-before和page-break-after属性 </p> <p class="sycode"> page-break-before:always让Web浏览器在一个指定样式之前插入分页符,是某个元素显示在打印页的顶部 </p> <p class="sycode"> page-break-after:always是某一个元素显示在打印页面最后 </p> </p> <p class="sycode"> 第17章,改正CSS设计习惯 <p class="sycode"> 1、添加注释 </p> <p class="sycode"> 2、组织样式和样式表 </p> <p class="sycode"> 3、样式命名要清晰 </p> <p class="sycode"> 4、根据用途而不是外观命名样式 </p> <p class="sycode"> 5、不根据位置命名 </p> <p class="sycode"> 6、不使用含义模糊的名称 </p> <p class="sycode"> 7、使用多个类可以节省时间 </p> <p class="sycode"> 8、将样式分组:把网页上相关部位所采用的样式集中在一起,把用途相关的样式集中在一起 </p> <p class="sycode"> 9、用注释分隔样式组 </p> <p class="sycode"> 10、使用多个样式表:可以使用@import合并多个样式表,再引入’ </p> <p class="sycode"> 11、消除浏览器的样式冲突:即各个浏览器的默认样式不一致,要对样式重置 </p> <p class="sycode"> 12、使用派生选择器:尽量减少ID选择器的使用,以及减少类的使用 </p> <p class="sycode"> 高级:面向对象的CSS,可登录网站: http://coding.smashingmagazine.com/2011/12/12/an-introduction-to-object-oriented-css-oocss/,还可以在以下网站查看OOCSS项目: https://github.com/stubbornella/oocss,另一种方法称作Scalable and Modular Architecture for CSS(简称SMACSS),这是一种创建可重用CSS组件的简单样式向导。可通过以下网站了解: http://smacss.com </p> <p class="sycode"> 13、给IE尝试不同的CSS </p> <p class="sycode"> IE条件注释基本结构: </p> <p class="sycode"> <p class="sycode"> <pre class="precsshui"><!--[if IE]> /*针对IE的样式*/<![endif]--></script></pre> </p> </p> <p class="sycode"> 非IE浏览器会当成HTML注释并忽略 </p> <p class="sycode"> 关于IE条件注释更多信息,请登录了解: http://msdn.microsoft.com/en-us/library/ms537512(VS.85).aspx </div> <div class=""> <ul class="m-news-opt fix"> <li class="opt-item"> <a href='/htmldaima-267284.html' target='_blank'><p>< 上一篇</p><p class="ellipsis">AI制作复活节图标_html/css_WEB-ITnose</p></a> </li> <li class="opt-item ta-r"> <a href='/htmldaima-267286.html' target='_blank'><p>下一篇 ></p><p class="ellipsis">理解CSS相对定位和固定定位_html/css_WEB-ITnose</p></a> </li> </ul> </div> </div> </div> <div class="g-title fix"> <h2 class="title-txt">人气教程排行</h2> </div> <div class="m-rank u-dashed mb40"> <ul> <li class="rank-item"> <a href="/htmldaima-274978.html" title='如何生成一个调查问卷_html/css_WEB-ITnose' class="item-name ellipsis" target="_blank"> <span class="g-art-count fr">230次</span> <span class="g-sort-num top">1</span> 如何生成一个调查问卷_html/css_WEB-ITnose </a> </li> <li class="rank-item"> <a href="/htmldaima-274080.html" title='在页面直接显示日历_html/css_WEB-ITnose' class="item-name ellipsis" target="_blank"> <span class="g-art-count fr">230次</span> <span class="g-sort-num second">2</span> 在页面直接显示日历_html/css_WEB-ITnose </a> </li> <li class="rank-item"> <a href="/htmldaima-262106.html" title='如何点击a标签实现弹出inputfile上传文件对话框_HTML/Xhtml_网页制作' class="item-name ellipsis" target="_blank"> <span class="g-art-count fr">230次</span> <span class="g-sort-num third">3</span> 如何点击a标签实现弹出inputfile上传文件对话框_HTML/Xhtml_网页制作 </a> </li> <li class="rank-item"> <a href="/htmldaima-278863.html" title='关于列表标记的详细介绍' class="item-name ellipsis" target="_blank"> <span class="g-art-count fr">229次</span> <span class="g-sort-num ">4</span> 关于列表标记的详细介绍 </a> </li> <li class="rank-item"> <a href="/htmldaima-277331.html" title='cssborder-bottom(指定下边线的样式、宽度及颜色)' class="item-name ellipsis" target="_blank"> <span class="g-art-count fr">229次</span> <span class="g-sort-num ">5</span> cssborder-bottom(指定下边线的样式、宽度及颜色) </a> </li> <li class="rank-item"> <a href="/htmldaima-270548.html" title='html新闻详情页_html/css_WEB-ITnose' class="item-name ellipsis" target="_blank"> <span class="g-art-count fr">229次</span> <span class="g-sort-num ">6</span> html新闻详情页_html/css_WEB-ITnose </a> </li> <li class="rank-item"> <a href="/htmldaima-268070.html" title='为何页面内容和网页边缘有空隙_html/css_WEB-ITnose' class="item-name ellipsis" target="_blank"> <span class="g-art-count fr">229次</span> <span class="g-sort-num ">7</span> 为何页面内容和网页边缘有空隙_html/css_WEB-ITnose </a> </li> <li class="rank-item"> <a href="/htmldaima-269054.html" title='position:fixed定位时“高度坍塌”问题的解决_html/css_WEB-ITnose' class="item-name ellipsis" target="_blank"> <span class="g-art-count fr">228次</span> <span class="g-sort-num ">8</span> position:fixed定位时“高度坍塌”问题的解决_html/css_WEB-ITnose </a> </li> <li class="rank-item"> <a href="/htmldaima-280863.html" title='htmlp标签怎么换行?htmlp标签添加br换行标签的应用' class="item-name ellipsis" target="_blank"> <span class="g-art-count fr">227次</span> <span class="g-sort-num ">9</span> htmlp标签怎么换行?htmlp标签添加br换行标签的应用 </a> </li> <li class="rank-item"> <a href="/htmldaima-281519.html" title='HTML的<!DOCTYPE>标签' class="item-name ellipsis" target="_blank"> <span class="g-art-count fr">226次</span> <span class="g-sort-num ">10</span> HTML的<!DOCTYPE>标签 </a> </li> <li class="rank-item"> <a href="/htmldaima-280725.html" title='html页面中友情链接怎么进行添加设置?(代码示例)' class="item-name ellipsis" target="_blank"> <span class="g-art-count fr">226次</span> <span class="g-sort-num ">11</span> html页面中友情链接怎么进行添加设置?(代码示例) </a> </li> <li class="rank-item"> <a href="/htmldaima-278651.html" title='form表单中属性及功能应用介绍汇总' class="item-name ellipsis" target="_blank"> <span class="g-art-count fr">226次</span> <span class="g-sort-num ">12</span> form表单中属性及功能应用介绍汇总 </a> </li> <li class="rank-item"> <a href="/htmldaima-278586.html" title='详解form标签中的method属性' class="item-name ellipsis" target="_blank"> <span class="g-art-count fr">226次</span> <span class="g-sort-num ">13</span> 详解form标签中的method属性 </a> </li> <li class="rank-item"> <a href="/htmldaima-277758.html" title='HTML5Canvas逼真烟雾效果js插件' class="item-name ellipsis" target="_blank"> <span class="g-art-count fr">226次</span> <span class="g-sort-num ">14</span> HTML5Canvas逼真烟雾效果js插件 </a> </li> <li class="rank-item"> <a href="/htmldaima-275669.html" title='页面跳转特效_html/css_WEB-ITnose' class="item-name ellipsis" target="_blank"> <span class="g-art-count fr">226次</span> <span class="g-sort-num ">15</span> 页面跳转特效_html/css_WEB-ITnose </a> </li> <li class="rank-item"> <a href="/htmldaima-271209.html" title='改变鼠标选中区域的样式。_html/css_WEB-ITnose' class="item-name ellipsis" target="_blank"> <span class="g-art-count fr">226次</span> <span class="g-sort-num ">16</span> 改变鼠标选中区域的样式。_html/css_WEB-ITnose </a> </li> <li class="rank-item"> <a href="/htmldaima-273428.html" title='关于$("body").append()一段html代码,在页面写能触发事件,写在js文件里写就没有_html/css_WEB-ITnose' class="item-name ellipsis" target="_blank"> <span class="g-art-count fr">225次</span> <span class="g-sort-num ">17</span> 关于$("body").append()一段html代码,在页面写能触发事件,写在js文件里写就没有_html/css_WEB-ITnose </a> </li> <li class="rank-item"> <a href="/htmldaima-271182.html" title='CSS3悬浮动画效果_html/css_WEB-ITnose' class="item-name ellipsis" target="_blank"> <span class="g-art-count fr">225次</span> <span class="g-sort-num ">18</span> CSS3悬浮动画效果_html/css_WEB-ITnose </a> </li> <li class="rank-item"> <a href="/htmldaima-271093.html" title='纯C语言实现的CSS解析器:katana_html/css_WEB-ITnose' class="item-name ellipsis" target="_blank"> <span class="g-art-count fr">225次</span> <span class="g-sort-num ">19</span> 纯C语言实现的CSS解析器:katana_html/css_WEB-ITnose </a> </li> <li class="rank-item"> <a href="/htmldaima-267953.html" title='body在默认情况下是具有margin外边距的_html/css_WEB-ITnose' class="item-name ellipsis" target="_blank"> <span class="g-art-count fr">225次</span> <span class="g-sort-num ">20</span> body在默认情况下是具有margin外边距的_html/css_WEB-ITnose </a> </li> </ul> </div> </div> </div> <!-- / 教程内容页 --> </div> </div> <!-- 页尾 --> <div class="footer"> 本站所有资源全部来源于网络,若本站发布的内容侵害到您的隐私或者利益,请联系我们删除!</div> <!-- / 页尾 --> <script type="text/javascript" src="/kan/js/read.js"></script> <div style="display:none"> <div class="login-box" id="login-dialog"> <div class="login-top"><a class="current" rel="nofollow" id="login1" onclick="setTab('login',1,2);" >登录</a></div> <div class="login-form" id="nav-signin"> <!-- <div class="login-ico"><a rel="nofollow" class="qq" id="qqlogin" target="_blank" href="/user-center-qqlogin.html"> QQ </a></div> --> <div class="login-box-form" id="con_login_1"> <form id="loginform" action="/user-center-login.html" method="post" onsubmit="return false;"> <p class="int-text"> <input class="email" id="username" name="username" type="text" value="用户名或Email" onfocus="if(this.value=='用户名或Email'){this.value='';}" onblur="if(this.value==''){this.value='用户名或Email';};" ></p> <p class="int-text"> <input class="password1" type="password" id="password" name="password" value="******" onBlur="if(this.value=='') this.value='******';" onFocus="if(this.value=='******') this.value='';" > </p> <p class="int-info"> <label class="ui-label"> </label> <label for="agreement" class="ui-label-checkbox"> <input type="checkbox" value="" name="cookietime" id="cookietime" checked="checked" value="2592000"> <input type="hidden" name="notforward" id="notforward" value="1"> <input type="hidden" name="dosubmit" id="dosubmit" value="1">记住我的登录 </label> <a rel="nofollow" class="aright" href="/user-center-forgetpwd.html" target="_blank"> 忘记密码? </a></p> <p class="int-btn"><a rel="nofollow" id="loginbt" class="loginbtn"><span>登录</span></a></p> </form> </div> <form id="regform" action="/user-center-reg.html" method="post"> <div class="login-reg" style="display: none;" id="con_login_2"> <input type="hidden" name="t" id="t"/> <p class="int-text"> <input id="email" name="email" type="text" value="Email" onfocus="if(this.value=='Email'){this.value='';}" onblur="if(this.value==''){this.value='Email';};"></p> <p class="int-text"> <input id="uname" name="username" type="text" value="用户名或昵称" onfocus="if(this.value=='用户名或昵称'){this.value='';}" onblur="if(this.value==''){this.value='用户名或昵称';};"></p> <p class="int-text"> <input type="password" id="pwd" name="password" value="******" onBlur="if(this.value=='') this.value='******';" onFocus="if(this.value=='******') this.value='';"> </p> <p class="int-text1"><span class="inputbox"> <input id="validate" name="validate" type="text" value="验证码" onfocus="if(this.value=='验证码'){this.value='';}" onblur="if(this.value==''){this.value='验证码';};"> </span><span class="yzm-img"><img src="/user-checkcode-index" alt="看不清楚换一张" id="indexlogin"></p> <p class="int-info"> <label> <input value="" name="agreement" id="agreement" CHECKED="checked" type="checkbox"> 我已阅读<a rel="nofollow" href="/user-center-agreement.html">用户协议</a>及<a rel="nofollow" href="/user-center-agreement.html">版权声明</a></label> </p> <p class="int-btn"><input type="hidden" name="dosubmit"/> <a rel="nofollow" class="loginbtn" id="register"><span>注册</span></a></p> </div> </form> </div> </div> </div> </div> <script type="text/javascript" src="/kan/js/foot_js.js"></script> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?6dc1c3c5281cf70f49bc0bc860ec24f2"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> <script type="text/javascript" src="/layui/layui.js"></script> <script> layui.use('code', function() { layui.code({ elem: 'pre', //默认值为.layui-code about: false, skin: 'notepad', title: 'php怎么实现数据库验证跳转代码块', encode: true //是否转义html标签。默认不开启 }); }); </script> </body> </html>