当前位置:Gxlcms > html代码 > CSS3秘笈第三版涵盖HTML5学习笔记13~17章-平凡世界平凡人

CSS3秘笈第三版涵盖HTML5学习笔记13~17章-平凡世界平凡人

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

第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媒体查询
在网页中添加以下代码(标签上方就是它最佳位置)可以忽略手机浏览器对于网页的自动缩放:</div> <div> <div class="cnblogs_code"> <pre class="brush:php;toolbar:false"><span style="color: #0000ff;"><</span><span style="color: #800000;">meta </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="viewport"</span><span style="color: #ff0000;"> content</span><span style="color: #0000ff;">="width=device-width"</span><span style="color: #0000ff;">></span></script></pre> </div> </div> <div>CSS的@viewport也可以实现同样的功能,应该将这个代码放在所有样式表前,但目前还有很多浏览器不支持,需要添加供应商前缀才行</div> <div> <div class="cnblogs_code"> <pre class="brush:php;toolbar:false"><span style="color: #800000;">@viewport</span>{<span style="color: #ff0000;"> width</span>:<span style="color: #0000ff;">device-width</span>; }</script></pre> </div> </div> <h2>媒体查询</h2> </div> <div> <div>可以根据目标浏览器的宽高给网页分配样式</div> <h3>使用媒体查询的策略</h3> <div>1、调整列</div> <div>2、弹性宽度</div> <div>3、缩进空白空间</div> <div>4、调整字号</div> <div>5、修改导航菜单</div> <div>6、在手持设备上隐藏内容</div> <div>7、使用背景图片</div> <h3>创建断点</h3> <div>媒体查询可给告诉浏览器在特定条件下使用特定的样式,特定条件通常被称为断点</div> <div>如何进行断点设置呢?简单做法是在网页中打开一个网页,然后使用浏览器窗口句柄,让窗口变窄,在某个点时设计将会变得很难看,这时可以设置一个断点,如此循环。一般来说会设计3个断点,一个针对智能手机,一个针对平板电脑,一个针对桌面型浏览器</div> <h3>桌面型优先还是手机版优先</h3> </div> <div> <h3>创建媒体查询</h3> <div> <div class="cnblogs_code"> <pre class="brush:php;toolbar:false"><span style="color: #0000ff;"><</span><span style="color: #800000;">link </span><span style="color: #ff0000;">href</span><span style="color: #0000ff;">="css/small.css"</span><span style="color: #ff0000;"> rel</span><span style="color: #0000ff;">="stylesheet"</span><span style="color: #ff0000;"> media</span><span style="color: #0000ff;">="(width:480px)"</span><span style="color: #0000ff;">></span></script></pre> </div> </div> <div>只是新增了media属性,设定条件</div> <div>IE8及更早版本不支持,通过在文档<head>中添加一些js,也可以让旧版IE支持媒体查询,从http://tinyurl.com/7w49a6z下载respond.js,引入:</div> <div> <div class="cnblogs_code"> <pre class="brush:php;toolbar:false"><span style="color: #008000;"><!--</span><span style="color: #008000;">[if lte IE 8> <script src="respond.min.js"></ script> <![endif]</span><span style="color: #008000;">--></span></script></pre> </div> </div> <div>这种只针对精确的查询,最好使用范围值,即借助max-width(小于等于)和min-width(大于等于)</div> <div>关于浏览器查询信息:www.w3.org/TR/css3-mediaqueries</div> <h2>弹性网格</h2> <div>HTML源码的顺序的重要性</div> <div>重置盒模型</div> <div>将固定宽度转换成弹性网格</div> <h2>流式图片</h2> <div>虽然弹性设计中列会随着浏览器窗口变小而收缩,但图片不会,这就可能导致图片溢出边界</div> <div>可以使用如下方式使图片变成具有弹性:</div> <div>1、首先,添加样式:</div> <div> <div class="cnblogs_code"> <pre class="brush:php;toolbar:false"><span style="color: #800000;">img </span>{<span style="color: #ff0000;"> max-width</span>:<span style="color: #0000ff;">100</span>; }</script></pre> </div> </div> <div>2、将HTML中所有img标签的height和width属性删除</div> <h3>流式图片不足</h3> <div>图片会伸展到列的100%宽度,这就可能发生拉伸超出它的自然宽度,发生形变和失真。</div> </div> <div> <h1 style="text-align: center;">第15章,定位网页上的元素</h2> <h2>定位属性的功能</h2> <div>CSS的position属性可以控制Web浏览器如何以及在和何处显示特定的元素</div> <div>CSS提供了4种类型的定位:</div> <div>绝对定位:通过以pixel、em或percentage为单位设定元素的左右上下方的位置对它进行定位。</div> <div><span style="color: #ff0000;">注:</span>不要在一个样式中同时设定float属性和任何一种定位,除了静态定位和相对定位,absolute和fixed也不能和float属性同时应用于同一个元素</div> <div>相对定位:相对于它在HTML流中的当前位置进行定位,与绝对定位不同,其他元素并不会占据相对定位元素原来在HTML中所处的位置,相对定位最大的好处不是移动元素,而是给它内部绝对定位元素设定一个新的参照点</div> <div>固定定位:固定定位元素会被锁定在屏幕某个位置上。</div> <div>静态定位:只是表示网页内容将遵循正常从上到下的HTML流</div> <div>position属性可以改变任何一个元素的定位,使用以下4个关键字:static、absolute、relative、fixed</div> <div><span style="color: #ff0000;">注:</span>静态定位元素将不支持以下要讨论的任何一种定位值</div> </div> <div> <h2>设置定位值</h2> <div>Web浏览器窗口显示区也被称为检视区(viewport),有上、下、左、右4条边,对应CSS属性top、bottom、left、right</div> <div>position属性后面还有更多种属性(top、bottom、left、right)</div> <div>利用绝对定位在网页上定位元素时,它的具体位置均取决于相关元素在其它标签中所嵌套的位置:</div> <div>1、如果一个标签的位置是绝对定位的,且它又不在其他任何设定了absolute、relative、fixed定位的标签里面,那它就是相对于浏览器窗口进行定位</div> <div>2、如果一个标签处在另一个设定了absolute、relative、fixed定位的标签里,那它就是相对于另一个元素的边框进行定位</div> <div><span style="color: #ff0000;">注:</span>在CSS中,术语relative不完全等同于它的本义,可以解读为“相对于我”的意思。即当对一个标签设置relative定位时,意思是“我内部所有定位元素应该相对于我的位置进行定位”</div> <h2>堆叠元素</h2> <div>一般来讲,定位元素重叠时的堆叠顺序是按照它们在网页HTML代码中的顺序来决定,但可以通过CSS属性z-index来控制定位元素的堆叠顺序:</div> <div>z-index:3; 这个值为数字,数字越大,越接近堆叠顶部,即出现在HTML页面的前面,还可以使用负值,将一个元素定位在其父元素或者其任意一个祖先元素之下。</div> <div><span style="color: #ff0000;">注:</span>IE7及更早版本不支持,z-index最大值是2147483647</div> </div> <div> <h2>隐藏部分网页</h2> <div>绝对定位元素时常用CSS属性visibility(可见性),隐藏部分网页或显示隐藏部分visibility:hidden(隐藏),visibility:visible(可见)</div> <div>visibility:hidden与display:none类似,不过visibility会在HTML网页留下空白,display不会</div> <div>opacity属性也可以隐藏元素:opacity:0,完全不可见,opacity:1,完全可见</div> <h2>强大的定位策略</h2> <div>综合使用position的定位</div> </div> <div> <h1 style="text-align: center;">第四部分----CSS高级技术</h2> <h1 style="text-align: center;">第16章,设计打印页面的CSS技术</h2> </div> <div> <h2>Media样式表的作用</h2> <div>CSS支持10种不同的媒体类型:all、braille、embossed、handheld、print、projection、screen、speech、tty、tv</div> <div>应特别注意的3种媒体类型:</div> <div>all:适用于每一种设备,当把样式嵌入或通过外部样式表进行链接时,用的就是这种方式</div> <div>screen:只适用于显示器</div> <div>print:只适用于打印网页</div> <h2>给外部样式表指定媒体类型</h2> <div> <div class="cnblogs_code"> <pre class="brush:php;toolbar:false"><span style="color: #0000ff;"><</span><span style="color: #800000;">link </span><span style="color: #ff0000;">rel</span><span style="color: #0000ff;">="stylesheet"</span><span style="color: #ff0000;"> media</span><span style="color: #0000ff;">="print"</span><span style="color: #ff0000;"> href</span><span style="color: #0000ff;">="print.css"</span><span style="color: #0000ff;">></span></script></pre> </div> </div> <div>技术上来说:@import url(print.css) print;也是可以的,只是IE不支持</div> <h3>在样式表中指定媒体类型</h3> <div>在样式表中使用以下语句:</div> </div> <div> <div class="cnblogs_code"> <pre class="brush:php;toolbar:false"><span style="color: #800000;">@media print</span>{ <span style="color: #008000;">/*</span><span style="color: #008000;">put your styles for printer in here</span><span style="color: #008000;">*/</span> }</script></pre> </div> <h2>重写文本样式</h2> <div>使用pixel或em单位对于浏览器而言可能很好,但对打印机并不起作用。浏览器会根据自己的解释将其转换成打印的单位:点(pt),不同浏览器解释不一样,所以最好能够设置成针对打印机的样式使用pt作为单位</div> <h2>定义打印背景</h2> <div>1、取消背景元素</div> <div>使用background:white;可直接将背景设置成白色,并取消图片</div> <div>2、保留背景元素</div> <div>3、给打印添加分页符</div> <div>使用page-break-before和page-break-after属性</div> <div>page-break-before:always让Web浏览器在一个指定样式之前插入分页符,是某个元素显示在打印页的顶部</div> <div>page-break-after:always是某一个元素显示在打印页面最后</div> </div> <div> <h1 style="text-align: center;">第17章,改正CSS设计习惯</h2> <div>1、添加注释</div> <div>2、组织样式和样式表</div> <div>3、样式命名要清晰</div> <div>4、根据用途而不是外观命名样式</div> <div>5、不根据位置命名</div> <div>6、不使用含义模糊的名称</div> <div>7、使用多个类可以节省时间</div> <div>8、将样式分组:把网页上相关部位所采用的样式集中在一起,把用途相关的样式集中在一起</div> <div>9、用注释分隔样式组</div> <div>10、使用多个样式表:可以使用@import合并多个样式表,再引入’</div> <div>11、消除浏览器的样式冲突:即各个浏览器的默认样式不一致,要对样式重置</div> <div>12、使用派生选择器:尽量减少ID选择器的使用,以及减少类的使用</div> <div>高级:面向对象的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</div> <div>13、给IE尝试不同的CSS</div> <div>IE条件注释基本结构:</div> <div> <div class="cnblogs_code"> <pre class="brush:php;toolbar:false"><span style="color: #008000;"><!--</span><span style="color: #008000;">[if IE]> /*针对IE的样式*/ <![endif]</span><span style="color: #008000;">--></span></script></pre> </div> </div> <div>非IE浏览器会当成HTML注释并忽略</div> <div>关于IE条件注释更多信息,请登录了解:http://msdn.microsoft.com/en-us/library/ms537512(VS.85).aspx</div> </div></div><div id="MySignature"></div> <div class="clear"></div> </div> <div class=""> <ul class="m-news-opt fix"> <li class="opt-item"> <a href='/htmldaima-263262.html' target='_blank'><p>< 上一篇</p><p class="ellipsis">文本溢出text-overflow和文本阴影text-shadow-小火柴的蓝色理想</p></a> </li> <li class="opt-item ta-r"> <a href='/htmldaima-263264.html' target='_blank'><p>下一篇 ></p><p class="ellipsis">关于响应式、媒体查询和media的关系、流媒体布局flex和emrem像素的使用我有一些废话要讲.....-乔仁杰</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>