CSS案例实践

一、层布局:定位元素重叠

在CSS中可以通过z-index属性来确定定位元素的层叠等级。需要注意的是:

  • z-index属性只有在元素的position属性取值为relative、absolute或fixed时才可以使用。
  • 在z-index属性中,其值越大层叠级别就越高,如果两个绝对定位的元素的该属性具有相同的number值,那么将依据它们在HTML文档中声明的顺序层叠。
  • z-index属性只能在同一级别的HTML上体现作用
  • 对于未指定此属性的绝对定位元素,可以看做值为auto,即自动设置,一般会根据父元素的定位进行确定;
  • 对于未指定此属性的绝对定位元素,此属性的number值为正数的元素会在其之上,为负数则在其之下。

eg:

 <!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>定位元素层叠</title>
<style type="text/css">
body{
margin: 0;
padding: 0;;
}
#contain1{
position: absolute;
z-index: 10;
width: 200px;
height: 200px;
background-color: #5d63fa;
}
#contain2{
position: absolute;
z-index: 1;
width: 200px;
height: 200px;
background-color: brown;
left: 30px;
top:30px;
}
</style>
</head>
<body>
<div id="contain1"></div>
<div id="contain2"></div>
</body>
</html>

效果:

如果将z-index属性的设置注释掉,则效果如下:

  <当父元素的层叠级别很高时,也会给内部子元素带来更多层叠级别积分。>


二、布局实战:高度自适应

  网页布局中经常需要定义元素的高度和宽度,但很多时候我们希望元素的大小能够根据窗口或父元素自动调整,这就是自适应。

1、宽度自适应:宽度自适应比较简单,只需要为元素的width属性定义一个百分比即可。

2、高度自适应:定义html和body的高度都为100%即可。(在IE浏览器中html的高度默认值为100%,body没有设置值;在非IE浏览器中,html和body都没有预定义高度的值)

eg:如果没有定义html和body的高度:

 <!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>高度自适应</title>
<style type="text/css">
#contain{ /*定义父元素显示属性*/
width:100%;
height: 100%; /*满屏显示*/
background-color: burlywood;
}
#center{
height: 50%;
background-color: darkslateblue;
width: 50%;
}
</style>
</head>
<body>
<div id="contain">
<div id="center">高度自适应</div>
</div>
</body>
</html>

效果:

定义之后:

 <!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>高度自适应</title>
<style type="text/css">
html,body{
height: 100%;
}
#contain{ /*定义父元素显示属性*/
width:100%;
height: 100%; /*满屏显示*/
background-color: burlywood;
}
#center{
height: 50%;
background-color: darkslateblue;
width: 50%;
}
</style>
</head>
<body>
<div id="contain">
<div id="center">高度自适应</div>
</div>
</body>
</html>

效果:

    *如果把子元素对象设置为浮动显示或绝对定位显示,高度依然能够自适应。


三、设计液态宽度的单栏页面

  液态宽度:即用百分比控制,而不是像素

eg:HTML部分:

 <!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>单列页面</title>
<link href="2.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="banner">
<h1> 散文集<sub>朱自清</sub></h1> <!--作者朱自清作为下标-->
<nav>
<a href="#">作者生平</a>
<a href="#">故事背景</a>
<a href="#">词语注释</a>
<a href="#">作品手法欣赏</a>
<a href="#">上一篇文章</a>
<a href="#">下一篇文章</a>
</nav>
</div>
<div id="maincontent">
<div id="maintext">
<h4>荷塘月色(节选)</h4>
<p>这几天心里颇不宁静。今晚在院子里坐着乘凉,忽然想起日日走过的荷塘,在这满月的光里,总该另有一番样子吧。月亮渐渐地升高了,墙外马路上孩子们的欢笑,已经听不见了;妻在屋里拍着闰儿⑴,迷迷糊糊地哼着眠歌。我悄悄地披了大衫,带上门出去。<br></p>
<p> 沿着荷塘,是一条曲折的小煤屑路。这是一条幽僻的路;白天也少人走,夜晚更加寂寞。荷塘四面,长着许多树,蓊蓊郁郁⑵的。路的一旁,是些杨柳,和一些不知道名字的树。没有月光的晚上,这路上阴森森的,有些怕人。今晚却很好,虽然月光也还是淡淡的。<br></p>
<p> 路上只我一个人,背着手踱⑶着。这一片天地好像是我的;我也像超出了平常的自己,到了另一个世界里。我爱热闹,也爱冷静;爱群居,也爱独处。像今晚上,一个人在这苍茫的月下,什么都可以想,什么都可以不想,便觉是个自由的人。白天里一定要做的事,一定要说的话,现 在都可不理。这是独处的妙处,我且受用这无边的荷香月色好了。<br></p>
<p><span>曲</span>曲折折的荷塘上面,弥望⑷的是田田⑸的叶子。叶子出水很高,像亭亭的舞女的裙。层层的叶子中间,零星地点缀着些白花,有袅娜⑹地开着的,有羞涩地打着朵儿的;正如一粒粒的明珠,又如碧天里的星星,又如刚出浴的美人。微风过处,送来缕缕清香,仿佛远处高楼上渺茫的歌声似的。这时候叶子与花也有一丝的颤动,像闪电般,霎时传过荷塘的那边去了。叶子本是肩并肩密密地挨着,这便宛然有了一道凝碧的波痕。叶子底下是脉脉⑺的流水,遮住了,不能见一些颜色;而叶子却更见风致⑻了。<br></p>
<p>月光如流水一般,静静地泻在这一片叶子和花上。薄薄的青雾浮起在荷塘里。叶子和花仿佛在牛乳中洗过一样;又像笼着轻纱的梦。虽然是满月,天上却有一层淡淡的云,所以不能朗照;但我以为这恰是到了好处——酣眠固不可少,小睡也别有风味的。月光是隔了树照过来的,高处丛生的灌木,落下参差的斑驳的黑影,峭楞楞如鬼一般;弯弯的杨柳的稀疏的倩影,却又像是画在荷叶上。塘中的月色并不均匀;但光与影有着和谐的旋律,如梵婀玲⑼上奏着的名曲。<br></p>
</div>
<div id="round">
<img width="300px" height="300px" src="data:image/1.png"/>
<p>朱自清(1898年11月22日—1948年8月12日),原名自华,号秋实,后改名自清,字佩弦。原籍浙江绍兴,出生于江苏省东海县(今连云港市东海县平明镇)。现代杰出的散文家、诗人、学者、民主战士。</p>
</div>
</div>
</body>
</html>

css样式:

 *{
margin:; /*清除页边距*/
padding:;
}
body{
margin:; /*清除页边距*/
padding:;
height: 100%; }
#banner{ /*顶部框架样式*/
width: 100%;
height: 180px;
background-color: #aaac90;
}
h1{
margin-left:10%;
padding-top: 20px;
font-family: verdana,sans-serif;
font-size: 50px;
color: brown;
}
sub{
font-size: 28px;
color: black;
}
nav{ /*定义导航栏属性*/
margin-left: 10px;
padding-top: 55px;
}
a{
text-decoration: none; /*去掉下划线*/
background-color: cornflowerblue;
padding:10px 20px 10px 20px;
float: left;
border-right: solid 2px snow;
}
a:visited,a:link{
color: snow;
}
a:hover,a:active{
color: slateblue;
text-decoration: underline; /*设置下划线*/
}
/*定义底部*/
#maincontent{ /*底部框架样式*/
top:200px;
width: 80%;
height: 800px;
margin: 0 auto;
}
#maintext{ /*定义底部文字部分样式*/
width:65%;
float: left; /*文字部分向左浮动*/
margin-top: 20px; /*距离底部边缘10px*/
margin-right: 20px;
}
#round{ /*定义底部图片部分样式*/
width:30%;
height: 600px;
float:right; /*图片部分向右浮动*/
background-color:black;
border: solid 2px darkslateblue;
border-radius: 2em; /*定义圆角边框*/
margin-top: 20px; /*距离底部边缘10px*/
}
#round p{
color: snow;
padding: 20px 10px;
}
#round img{
padding: 20px 10px;
}
p{
line-height: 2em; /*文字行高*/
text-indent: 2em; /*首行缩进*/
padding-top: 10px;
}
span{
line-height: 100%;
font-size: 50px;
background-color: powderblue;
}

效果:


四、设计多级菜单:平行式二级菜单

eg:html代码:

 <!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>平行式二级菜单</title>
<link href="mynav.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="menu">
<ul>
<li><a href="#">菜单一</a>
<ul>
<li><a href="#">子菜单一</a></li>
<li><a href="#">子菜单二</a></li>
<li><a href="#">子菜单三</a></li>
<li><a href="#">子菜单四</a></li>
</ul>
</li>
<li><a href="#">菜单二</a>
<ul>
<li><a href="#">子菜单一</a></li>
<li><a href="#">子菜单二</a></li>
<li><a href="#">子菜单三</a></li>
<li><a href="#">子菜单四</a></li>
</ul>
</li>
<li><a href="#">菜单三 </a></li>
<li><a href="#">菜单四</a></li>
<li><a href="#">菜单五</a></li>
</ul>
</div>
</body>
</html>

CSS样式:

 #menu ul{     /*清除所有列表的样式,即去掉前面的圆点*/
list-style-type: none;
}
#menu li{
float: left; /*向左浮动,使链接横向排列*/
position: relative; /*相对定位,定义包含快*/
}
#menu ul ul{ /*定义二级列表属性*/
visibility: hidden; /*先默认隐藏起来*/
position: absolute; /*绝对定位,根据父元素li精确定位*/
left: -40px; /*距离父元素li左侧2像素*/
top: 25px; /*距离顶部23像素,相当于在主菜单底部显示*/
}
#menu a{ /*定义超链接属性*/
text-decoration: none; /*去掉链接下划线*/
background-color: darkslateblue;
color: snow; /*定义文字颜色*/
border: solid 2px burlywood; /*定义边框*/
padding: 8px 25px; /*定义主菜单列表项的内边距,加宽菜单项显示*/
margin: 3px 1px; /*定义主菜单列表项的外边距,为每个菜单项增加间隙*/
}
#menu ul li:hover ul{ /*定义一级列表的每一列在鼠标经过时,显示隐藏的二级列表*/
visibility: visible;
}
#menu ul ul li{
clear: both; /*清除两侧的浮动,避免列表项之间的重叠*/
}
#menu ul ul li a{
display: block; /*很重要!使a元素块状显示*/
width: 70px;
height: 20px;
margin:; /*清除边界*/
}
#menu ul a:hover{
background-color: burlywood;
text-decoration: underline;
}

效果:


五、设计多级菜单:垂直式多级菜单

1、HTML代码:

 <!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>垂直式多级菜单</title>
<link rel="stylesheet" href="mynav2.css" type="text/css">
</head>
<body>
<div id="menu">
<ul>
<li><a href="#">菜单一</a>
<ul>
<li><a href="#">菜单一1</a>
<ul>
<li><a href="#">菜单一1-1</a>
<ul>
<li><a href="#">菜单一1-1-1</a></li>
<li><a href="#">菜单一1-1-2</a></li>
<li><a href="#">菜单一1-1-3</a></li>
<li><a href="#">菜单一1-1-4</a></li>
</ul>
</li>
<li><a href="#">菜单一1-2</a></li>
<li><a href="#">菜单一1-3</a></li>
<li><a href="#">菜单一1-4</a></li>
</ul>
</li>
<li><a href="#">菜单一2</a></li>
<li><a href="#">菜单一3</a></li>
<li><a href="#">菜单一4</a></li>
</ul>
</li>
<li><a href="#">菜单二</a></li>
<li><a href="#">菜单三</a></li>
<li><a href="#">菜单四</a></li>
<li><a href="#">菜单五</a></li>
</ul>
</div>
</body>
</html>

2、css样式:

 #menu ul{    /*定义一级列表属性*/
list-style: none; /*去掉了所有列表项前面的圆点*/
font-size: 24px;
position: absolute;
}
#menu li{ /*定义一级列表项属性*/
height: 40px;
}
#menu a{
text-decoration: none; /*去掉所有超链接的下划线*/
background-color: slateblue;
padding: 5px 20px;
color: snow;
border: solid 2px cornflowerblue;
}
#menu ul ul{
visibility: hidden; /*隐藏二级菜单*/
position: relative;
top:-25px;
left:78px;
}
#menu ul ul ul ul{
position: relative;
top: -25px;
left: 110px;
}
#menu :hover>a { /*定义在现代标准浏览器中鼠标经过链接的样式。重要!!!*/
background-color: burlywood;
text-decoration: underline;
}
#menu ul li:hover ul{ /*鼠标经过一级菜单时显示二级菜单*/
visibility: visible;
}
#menu ul li:hover ul ul{ /*鼠标经过一级菜单时隐藏三级菜单*/
visibility: hidden;
}
#menu ul ul li:hover ul ul{ /*鼠标经过二级菜单时隐藏四级菜单*/
visibility: hidden;
}
#menu ul ul li:hover ul { /*鼠标经过二级菜单时显示三级菜单*/
visibility: visible;
}
#menu ul ul ul li:hover ul { /*鼠标经过三级菜单时显示四级菜单*/
visibility: visible;

3、效果:
鼠标一层层的放上去:


CSS典型案例实践的更多相关文章

  1. SMACSS:一个关于CSS的最佳实践-2.Base Rules

    回顾 在上一篇SMACSS:一个关于CSS的最佳实践-Overview中,讲到SMACSS将CSS Rules分为5个Categories: Base Layout Module State Them ...

  2. TOP100summit 2017:小米唐沐等大咖精心挑选的100个年度研发案例实践

    2017年,机器学习.大数据.人工智能等词汇成为软件研发行业的主流,大前端.DevOps.区块链等技术方式成为热点方向:2017年,智能硬件开始成为新的焦点,这一年更被称为智能音箱井喷的一年:2017 ...

  3. STM32单片机应用与全案例实践 /stm32自学笔记 第二版 pdf

    STM32单片机应用与全案例实践pdf https://pan.baidu.com/s/16WrivuLcHvLTwS__Zcwl6Q 4rj3 stm32自学笔记 第二版 pdf https://p ...

  4. NB-IoT的相关资料整理(基本概念,技术优势,典型案例和当前的进展)

            人与人之间的通讯规模已近天花板,物与物的则刚刚进入增长快车道.随着可穿戴.车联网.智能抄表等新兴市场的开启,工业4.0.智慧城市.智慧农业等理念照进现实,万物互联的时代正加速到来. 一 ...

  5. Selenium自动化测试项目案例实践公开课

    Selenium自动化测试项目案例实践公开课: http://gdtesting.cn/news.php?id=55

  6. elasticsearch中的mapping映射配置与查询典型案例

    elasticsearch中的mapping映射配置与查询典型案例 elasticsearch中的mapping映射配置示例比如要搭建个中文新闻信息的搜索引擎,新闻有"标题".&q ...

  7. SMACSS:一个关于CSS的最佳实践-3.Layout Rules

    本篇笔者要介绍的是Layout Rules.看完本篇,大家将会知道Layout Rules的作用,以及哪些CSS应该归类为Layout Rules. 什么是Layout Rules? Layout R ...

  8. SMACSS:一个关于CSS的最佳实践-1.Overview

    什么是SMACSS? SMACSS(发音"smacks"),全称Scalable and Modular Architecture for CSS.顾名思义,SMACSS是一个可扩 ...

  9. Css Secret 案例全套

    Css Secret 案例全套 github地址 案例地址 该书揭示了 47 个鲜为人知的 CSS 技巧,主要内容包括背景与边框.形状. 视觉效果.字体排印.用户体验.结构与布局.过渡与动画等.去年买 ...

随机推荐

  1. ACM ICPC 2015 Moscow Subregional Russia, Moscow, Dolgoprudny, October, 18, 2015 A. Anagrams

    A. Anagrams time limit per test 1 second memory limit per test 512 megabytes input standard input ou ...

  2. VS开发好用的扩展

    VS开发好用的扩展(转) 转自:http://www.haogongju.net/art/1977373 首先为大家介绍一下开发字体,做程序开发,代码可读性,在侧面也能帮助开发提高效率,所以给大家介绍 ...

  3. 转:DataGridView列的宽度、行的高度自动调整

    注意:DataGridView控件是从.NET Framework 2.0版本开始追加的. 介绍一下DataGridView列的宽度和行的高度,根据单元格或Header的内容(一般是内容全部被表示)自 ...

  4. 【转】在C#中使用SendMessage

    SendMessage是一个在user32.dll中声明的API函数,在C#中导入如下: using System.Runtime.InteropServices; [DllImport(" ...

  5. Connect is a middleware layer for Node.js

     Connect is a middleware layer for Node.js   http://senchalabs.github.com/connect Connect Connect is ...

  6. linux下定时重启tomcat

    工具/原料 linux tomcat 方法/步骤 编写tomcat_shutdown.sh: #!/bin/sh export JAVA_HOME=/home/oracle/jdk1..0_67/ e ...

  7. pushState()、popstate事件配合ajax实现浏览器前进后退页面局部刷新

    最近研究pushState,看了网上的文章还是不怎么会用,于是自己摸索着理解使用,终于实现局部刷新同时前进后退. 首先说说pushState(),这个函数将当前的url等信息加入history堆栈中: ...

  8. 关于web前端(知乎上收集)

    1988年的图灵奖得主Ivan Sutherland就是搞人机交互的,事情跟现在的前端是一个路子. 微博上@_Franky: 这和司机一个道理. 开车也是易学难精的.基本个把月就能上路. 而需要赛车手 ...

  9. 【android】新手容易遇到的[error: Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Light'.]Theme出错的问题

    一.概述 近期刚接手了一个项目,开发工具为eclipse,由于版本较低,且考虑到如果转android studio项目的话,会其他人的维护带来困难,所以想着还是维护项目原来的开发环境吧. 但是导入项目 ...

  10. android-数据存储之远程服务器存储

    一.如何编码实现客户端与服务器端的交互 <一>JDK内置原生API HttpUrlConnection <二>Android内置的包装API HttpClient浏览器 < ...