摘要:本文首先介绍了DIV和CSS技术的特点,然后分析了CSS包模型,最后通过具体实例讲解了DIV+CSS网页布局技术的方法和实现过程。 实例表明,该技术具有代码简单、性能与内容分离等优点。
关键词:DIVCSS 网页设计
0 序言
HTML[1](HyperTextMark-upLanguage),即超文本标记语言,是互联网上使用最广泛的语言,也是撰写网页文档的基本语言。 HTML主要包括两部分:head和body。 后面描述了浏览器需要的信息,正文包含了需要解释的具体内容。 在一般的网页设计中,我们需要设计的内容都体现在主体中。
DIV 元素用于提供在 HTML 文档中布置大块内容的结构和背景。 它是HTML中的一个标签css 外边框,这个标签的作用是定位网页内容中的图片、文本、视频等相关信息。 通常我们也称其为DIV层的定位。 CSS(cascading stylesheet),层叠样式表,是一种用于控制网页样式并允许样式信息与网页分离的标记语言。 CSS 最初于 1996 年获得 W3C 批准,但推荐使用。 CSS的引入是为了让HTML语言更好的适应页面的美术设计。 它基于 HTML 语言,提供丰富的低级功能,例如字体、颜色、背景和整体布局,但网页设计人员可以针对各种可视化浏览器(包括显示器、打印机、打字机、投影仪和 PDA) ) 设置不同的样式。 CSS的引入,掀起了网页设计的一个又一个新高潮。 使用 CSS 设计的优秀页面层出不穷。
1CSS包模型[2]
bag模型是CSS控制页面时一个非常重要的概念。 只有掌握好包的模型以及里面每个元素的用法,才能真正掌控页面中的每个元素。
页面中的所有元素都可以看作是包,占据页面上一定的空间。 一般来说,占用的空间往往大于纯内容。 也就是说,可以通过调整包的边界、距离等参数来调整包的位置和大小。 一个页面是由很多这样的包组成的,它们之间会互相影响,所以把握包的模型需要从两个方面来理解。 一是了解孤立包的内部结构,二是了解多个包之间的相互关系。
CSS中,一个独立的bag模型由4部分组成:内容内容、边框边框、padding内行距和margin外距。 如图1所示。
图1 袋子模型
袋子的实际长度或高度由内容+内线间距+边框+外边框组成。 在css中,你可以通过设置width和height的值来控制内容所占据的圆的大小,但是对于任何一个bag,你都可以分别设置四个边的border、padding和margin。 因此css 外边框,只要利用好这些属性,就足以实现各种排版效果。
2DIV+CSS的基本设计
如果采用DIV和CSS网页布局结构,首先需要使用DIV来划分块并定义语义结构; 然后使用CSS定位并添加样式,如浮动、位置、对齐属性、添加背景等; 在块中添加相应的样式,如文本、图片等。下面以最常用的三栏自适应间距布局为例,介绍使用DIV+CSS布局网页的基本技巧。
使用标签将网页划分为不同的块,包括页眉、内容(包括侧边栏区域和主体区域)、页脚三个区域,分别作为网页的颈部、内容和版权区域。 编译HTML文档代码如下:
背部
侧边栏
主要内容
最近的一个项目有一个设计图如下
需要给列表添加标签和连接,有点类似于货运信息图。 实现思路是对2、3、4添加完整的左边框,对1、5添加一半的左边框。完整的左边框说起来容易,只能用border-left来实现,而如何实现一半边框? 首先想到的是使用边框渐变或者伪类来实现。
1. 边框渐变
首先我们看一下border-image的相关属性值
/*正式语法*/
border-image:||
||
||
]||
/* 默认值为 none 100% 1 0 stretch*/
border-image-source——资源图片地址(默认为无)css外边框,这个位置可以用渐变色代替,这个渐变色正是我们这次需要用到的。 border-image-slice——边界切片,将整个区域定义为9个切片,如右图所示。 请注意,top/bottom/left/right 值的总和通常不能超过元素的高度/宽度。
border-image-width——边框长度,该值不会改变实际边框长度css外边框,但会改变显示的长度。
border-image-outset——边框图像区域超出边框的量,可以理解为向外偏转的量。
border-image-repeat—边界图像传播方法(重复、圆角、拉伸)。
根据MDN中对border-image的描述,我们有两点需要注意: 1、使用border-image时,会替换border-style属性设置的边框样式; 2. 当规范要求使用 border-image 样式时必须存在(有些浏览器没有实现这一点)。 由此我们可以看出,即使使用了border-image,border-style也会被覆盖,我们仍然需要声明border-style。 了解了以上知识后,我们就不多说了,直接上路吧! 上面的代码:
/*css 代码*/
.box {
height: 200px;
width: 200px;
border-left: 5px dashed;
background-color: skyblue;
border-image: -webkit-linear-gradient(
top,
transparent 50%,
green 50%,
green 100%
)
1;
}
得到如右图所示的疗效。
不难发现,这个边框其实是一半,而且是一条虚线,不符合我们的设计,所以需要改成实线,而且根据文档,我们没有地方可以调整,此方法无效。 而且我不放弃,难道真的不能用渐变吗? 在网上搜索了很久,终于找到了另一种实现方式——反向镂空(具体可以参考张新旭的博客)。
/*css 代码*/
.box {
width: 150px;
border-left: 5px dashed skyblue;
background: linear-gradient(
to bottom,
transparent 50%,
green 50%,
green
);
background-origin: border-box;
}
.content {
height: 100px;
background-color: skyblue;
}
从效果上不难看出,该方法通过.box背景渐变实现了边框渐变的效果,同时保留了边框的实线特征。 使用上述方法时有两点需要注意。 .box的边框颜色必须与.content的背景颜色一致,.box渐变上部的颜色必须与.content的背景颜色一致。
2. 伪类
使用伪类就简单多了,直接看代码即可
/*css 代码*/
.box {
height: 200px;
width: 200px;
background-color: skyblue;
position: relative;
}
.box:after {
content: "";
position: absolute;
height: 50%;
border-left: 5px dashed green;
top: 50%;
}
疗效如下:
发表评论