css定位技术解析

css定位技术,在网页设计开发中有着很重要的作用。有许多的案例都可以用到它。比如说二级菜单,弹窗,图片轮播等等。现在我来总结一下它的使用。

css定位属性是position,它有如下的几种属性值:

1:static:(默认值)无特殊定位,对象遵循正常文档流。top,right,bottom,left等属性不会被应用。

2:relative:对象遵循正常文档流,但将依据top,right,bottom,left等属性在正常文档流中偏移位置。

3:absolute:对象脱离正常文档流,使用top,right,bottom,left等属性进行绝对定位。而其层叠通过z-index属性定义。

4:fixed:对象脱离正常文档流,使用top,right,bottom,left等属性以窗口为参考点进行定位,当出现滚动条时,对象不会随着滚动。IE6及以下不支持此参数值

有几点要注意:

1:relative对象是不会脱离文档流的。就算relative平移了它的位置,它以前位置也是不可能出现其他元素的。relative平移的参照对象位置是relative元素本身没有平移时的位置。

2:absolute对象是会脱离文档流的,absolute平移的参照对象位置是它最近的一个非static定位的父元素。

3:fixed对象是会脱离文档流的,fixed平移的参照对象位置是window这个元素(也就是我们当前可以看到窗口)。

对比以上他们的特征我们可以得出。fixed这个定位经常用于固定某个元素在窗口的位置(不管窗口是否有拖动),比如说大家经常看到的网页旁边的QQ客服,当前可视话窗口的居中弹窗等等。absolute经常用于一些元素层叠和一些css动画的实现,比如大家经常看到的二级菜单,图片轮播等等。下面我就用个事例来描述它们的使用。

<!doctype html>
<html lang="zh">
 <head>
 <meta charset="UTF-8">
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
 <title>Document</title>
 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
 <meta name="renderer" content="webkit|ie-comp|ie-stand">
 <meta name="keywords" content="">
 <meta name="description" itemprop="description" content="">
 <meta name="protocol" content="1">
 <meta itemprop="name" content="测试">
 <meta itemprop="image" content="http://9.url.cn/edu/img/logo_pc_rich.png"/>

 <style rel="stylesheet" type="text/css">
		*{margin:0px;padding:0px;font-family:"微软雅黑";font-size:12px;text-decoration:none;color:black;}
		.banner{width:98%;height:30px;margin:0 auto;border:1px solid red;position:fixed;top:5px;left:1%;}

		ul{list-style:none;height:100%;}
		ul li{float:left;width:100px;height:22px;line-height:22px;padding:4px 0;border-right: 1px solid gray ;position:relative;margin:0px;text-align:center;}
		ul li div{width:100px;position:absolute;top:100%;left:-1px;border:1px solid gray;border-top:0;display:none;}
		ul li:hover{background:red;}
		ul li:hover div{display:block;}

		ul li div span{display:block;width:100%;height:22px;line-height:22px;text-align:center;border-top:1px solid gray;}
		ul li div span a{display:block;width:100%;height:100%;}
		ul li div span:hover{background:red;cursor:pointer;}

 </style>
 </head>
 <body>
		<div class="banner" id="header">
			<ul>
				<li>
					<a href="javasript:;">首页</a>
					<div class="b_menu">
						<span><a  href="javasript:;">首页</a></span>
						<span><a  href="javasript:;">首页</a></span>
						<span><a  href="javasript:;">首页</a></span>
						<span><a  href="javasript:;">首页</a></span>
					</div>
				</li>
				<li>
					<a  href="javasript:;">咨询</a>
					<div class="b_menu">
							<span><a  href="javasript:;">咨询</a></span>
							<span><a  href="javasript:;">咨询</a></span>
							<span><a  href="javasript:;">咨询</a></span>
					</div>
				</li>
				<li>
					<a  href="javasript:;">活动</a>
					<div class="b_menu">
							<span><a  href="javasript:;">活动</a></span>
							<span><a  href="javasript:;">活动</a></span>
					</div>
				</li>
			</ul>
		</div>

		<div>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>

			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>

			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>

			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>
			<p>content</p>

		</div>
 </body>
</html>

其中在窗口一直下拉的时候菜单栏一直置顶显示,关键代码是:

.banner{width:98%;height:30px;margin:0 auto;border:1px solid red;position:fixed;top:5px;left:1%;}

中的fiexed定位,和top,left的属性的设置。

其中二级菜单的关键代码是:

ul li{float:left;width:100px;height:22px;line-height:22px;padding:4px 0;border-right: 1px solid gray ;position:relative;margin:0px;text-align:center;}
		ul li div{width:100px;position:absolute;top:100%;left:-1px;border:1px solid gray;border-top:0;display:none;}

中ul li的relative定位和ul li div中的absolute定位。注意这里的absoulte的定位是相对于ul li来说的。

时间: 2024-11-09 08:46:04

css定位技术解析的相关文章

DW1000芯片定位技术解析

近些年来随着物联网和机器人技术的大发展,精确定位技术的热度也随之攀升.目前精确定位的技术有很多,如基于wifi.RFID.zigbee.超声波.UWB等技术都可以实现精准定位.由于技术的不同,精度也不尽相同,造假也不同.本文将讲述基于超宽带技术的定位系统的技术实现框架和流程,由于本文主要参考DECAWAVE公司出品的DW1000芯片相关技术问题,因此对DW1000芯片实现产品化具有推动作用. 系统框架 技术DW1000芯片的定位技术主要包括锚站.标签.应用服务器和数据库 锚站:锚站与标签进行无线

解析CSS加密技术之“障眼法”

CSS(Cascading Style Sheet,可译为"层叠样式表"或"级联样式表")是一组格式设置规则,用于控制Web页面的外观.通过使用CSS样式设置页面的格式,可将页面的内容与表现形式分离.页面内容存放在HTML文档中,而用于定义表现形式的CSS规则则存放在另一个文件中或HTML文档的某一部分,通常为文件头部分.将内容与表现形式分离,不仅可使维护站点的外观更加容易,而且还可以使HTML文档代码更加简练,缩短浏览器的加载时间. 一般情况下,我们的CSS是无需

CSS Sprites技术(将背景图整合到一张图中,再利用CSS背景图片定位到要显示的位置)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ

CSS 继承深度解析

FROM ME: 之前在研究前端性能优化的时候,就有学习关于CSS中“善用CSS中的继承”. 原文:CSS Inheritance, The Cascade And Global Scope: Your New Old Worst Best Friends 译文:掘金翻译计划 我酷爱模块化设计.长期以来我都热衷于将网站分离成组件,而不是页面,并且动态地将那些组件合并到界面上.这种做法灵活,高效并且易维护. 但是我不想我的设计看上去是由一些不相关的东西组成的.我是在创造一个界面,而不是一张超现实主

LTE时代的定位技术:OTDOA,LPP,SUPL2.0

移动定位技术的发展历程 如今智能手机已经在整个社会普及,数量众多的手机应用成为了人们生活当中不可或缺的一部分.越来越多的手机应用都用到了手机定位技术,无论是本地搜索类应用,还是各种商业信息发布类应用,更不用说众多的交通导航类应用.可以说定位服务(LBS)的应用已经是当下最为流行的移动应用之一. 移动定位技术的发展经历了多个阶段.最初的基于服务蜂窝小区的定位技术(如CELL-ID)可以快速定位,但是不够精确.之后的基于卫星信号的GNSS(全球卫星导航系统)定位技术可以精确地定位,然而由于需要搜星使

Selenium自动化中DOM,XPATH,CSS定位Web页面对象的优劣性分析

加速IE浏览器自动化执行效率:Selenium自动化中DOM,XPATH,CSS定位Web页面对象的优劣性分析 1.技术背景       在Web应用中,用户通过键盘在输入框中输入值和鼠标点击按钮,链接等.比如在用户名输入框和密码输入框输入正确的用户名和密码,然后点击登录按钮进行登录.在Selenium自动化中,Selenium提供多种API来对HTML元素进行操作,对于每个HTML元素,需要一个可以标识它的标识符,在Selenium中称之为定位器,Selenium支持多种不同类型的定位器,有标

【CSS】CSS Sprites (CSS 精灵) 技术

CSS Sprites CSS Sprites在国内很多人叫css精灵,是一种网页图片应用处理方式.它允许你将一个页面涉及到的所有零星图片都包含到一张大图中去,这样一来,当访问该页面时,载入的图片就不会像以前那样一幅一幅地慢慢显示出来了.对于当前网络流行的速度而言,不高于200KB的单张图片的所需载入时间基本是差不多的,所以无需顾忌这个问题. CSS Sprites其实就是把网页中一些背景图片整合到一张图片文件中,再利用CSS的“background-image”,“background- re

URL锚点HTML定位技术机制

一.锚点是什么 锚点就等同于火影中的“飞雷神之术”,我们先看百科中锚点的解释: 使用命名锚记可以在文档中设置标记,这些标记通常放在文档的特定主题处或顶部.然后可以创建到这些命名锚记的链接,这些链接可快速将访问者带到指定位置.创建到命名锚记的链接的过程分为两步.首先,创建命名锚记,然后创建到该命名锚记的链接. 再看看“飞雷神之术”的解释: 日本动漫<火影忍者>中时空术的一种,S级.利用标记完成空间穿梭. 都是做标记,然后快速定位.说不定AB(岸本齐史)也是个网页制作爱好者哦! 其实,关于锚点,我

谈谈CSS预处理技术中for循环的应用-CSS Sprite

各种新技术的出现,推动着Web前端技术飞速发展,在提升用户体验的同时也方便开发者: 在前端优化时,我们使用CSSSprite技术,把多个图片合在一张图片上,然后通过background-image,background-position来定位现实不同效果,这样来达到减少HTTP请求,毕竟HTTP请求是相当昂贵的,但是HTTP请求是少了,开发人员工作量就大了,要定位图片不是一件很方便的事情,非常麻烦,要一个一个地计算: 其实我们可以有点技巧,让图片排列有点规律,这样可以减少大量时间: 假如我们的图