实现DIV居中布局三种途径(转)

DIV+CSS布局有很多值得学习的地方,这里和大家描述一下关于DIV居中布局的实现方法,主要有三种方法,每种方法都有各自的特点,请看下文详细介绍,相信通过本文描述你对DIV居中布局一定会有深刻的认识。

关于DIV居中布局的几种实现方法

现在DIV+CSS布局越来越流行了,怎么实现div居中好像是个难题。本文给出关于DIV居中布局的几种实现方法,相信会对大家有所帮助.

第一种方法:

body{  
margin:0pxauto;  
text-align:center;  
}

 

但是如果没申明下面这句解析方法,页面就会出错.不能居中对齐!

<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.1//EN"  "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 

 

但是有时候页面并不能全部按上面规定的代码格式来编写,比如说要改多彩滚动条.

第二种方法:

margin-left:50%;  
left:-width/2; 

 

这里的width不是CSS中的Width,而是你的DIV的宽度例如你的div是768px宽,那么你就应该设置left:-384px。

第三种方法:使用JS来控制div居中.

在页面之中添加了下面的一小段代码.

<scriptlanguagescriptlanguage="javascript" type="text/javascript"src="function.js"></script> 

 

function.js内容:

if(window.screen.width>800)  
{document.write("<styletypestyletype=\"text/css\"> body{margin-left:"+(window.screen.width-800)/2+"px}</style>");}  

 

经过测试.可以正常实现DIV居中

补充一点:上面这段JS必须放在你的最后一个CSS连接或</style>的后面.

◆下面是这种方法的详细讲解:

首先解释一下JS中窗口和网页的几种尺寸属性的含义

document.body.clientWidth(网页可见区域宽):是指浏览器显示网页的区域宽度,不包括浏览器的边框宽度和垂直滚动条的宽度。大小随着浏览器的窗口大小而改变。

document.body.clientHeight(网页可见区域高):是指浏览器显示网页的区域所能看到的高度,不包括浏览器的边框宽度和水平滚动条的高度。大小随着浏览器的窗口大小而改变。

document.body.scrollTop(网页被卷去的高):是指拉动垂直滚动条时网页上面被地址栏及菜单栏遮盖着的部分的高。

document.body.scrollLeft(网页被卷去的左):是指拉动水平滚动条时网页左面被左边线遮盖着的部分的宽。

现在我们来分析一下程序该如何实现:

第一步我们要实现的是使层在弹出时绝对DIV居中不去考虑是否有滚动条的情况。

1.计算出层距离显示区域左边和上边的位置

注意:divId指的是所要居中的层,divId.clientWidth为其宽度!

vardivId=document.getElementById("xxx");  
varv_left=(document.body.clientWidth-divId.clientWidth)/2;  
varv_top=(document.body.clientHeight-divId.clientHeight)/2;  

 

2.把得到的值重新赋给DIV的left和top属性

divId.style.left=v_left;  
divId.style.top=v_top;  

 

说明:divId为DIV标签的id值,这样这个层就是DIV居中显示的了。

第二步我们要实现的是使在拖动滚动条的情况下弹出的层也能居中。

1.其实很简单我们只要把拖动的宽度和高度加到前面计算出来的左边距和上边距中就OK了。

v_left+=document.body.scrollLeft;  
v_top+=document.body.scrollTop;  

 

2.把得到的值重新赋给DIV的left和top属性

divId.style.left=v_left;  
divId.style.top=v_top;  

 

这样显示出来就是DIV居中的了。

完整代码如下:

<!doctypehtmlpublic“-//w3c//dtdhtml4.0transitional//en"> 
<html> 
<head> 
<title>弹出的层居中显示</title> 
<metanamemetaname="generator"content="editplus"> 
<metanamemetaname="author"content=""> 
<metanamemetaname="keywords"content=""> 
<metanamemetaname="description"content=""> </head> 
<body> 
<tablewidthtablewidth=100%> 
<tr><td><spanonclickspanοnclick="divcenter()">test</span></td></tr> 
<tr><td><spanonclickspanοnclick="divcenter()">test</span></td></tr> 
<tr><td><spanonclickspanοnclick="divcenter()">test</span></td></tr> 
<tr><td><spanonclickspanοnclick="divcenter()">test</span></td></tr> 
<tr><td><spanonclickspanοnclick="divcenter()">test</span></td></tr> 
<tr><td><spanonclickspanοnclick="divcenter()">test</span></td></tr> 
</table> 
<dividdivid=mxhstyle="position:absolute;  
left:200px;top:30px;width:200px;height:200px;  
background-color:navy;border:2px">我是居中显示的了。</div> 
</body> 
</html> 

 

总结一下:

主要是这句代码起的作用:(window.screen.width-800)/2//计算页面应该留出的边距数值.800为我的DIV宽度+滚动条宽度.实际应用改为你自己的大小.

转载于:https://www.cnblogs.com/KevinG/p/3533375.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/473653.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 1631. 最小体力消耗路径(DFS + 二分查找)

文章目录1. 题目2. 解题1. 题目 你准备参加一场远足活动。给你一个二维 rows x columns 的地图 heights &#xff0c;其中 heights[row][col] 表示格子 (row, col) 的高度。 一开始你在最左上角的格子 (0, 0) &#xff0c;且你希望去最右下角的格子 (rows-1, columns-1) &…

Spark资源调度分配

1、任务调度与资源调度 任务调度&#xff1a;是指通过DAGScheduler&#xff0c;TaskScheduler&#xff0c;SchedulerBackend等进行的作业调度。 资源调度&#xff1a;是指应用程序获取资源。 任务调度是在资源调度的基础上&#xff0c;没有资源调度&#xff0c;那么任务调度…

两个栈实现队列与两个队列实现栈

1. 两个栈实现队列 实现一 思路 s1是入栈的&#xff0c;s2是出栈的。 入队列&#xff0c;直接压到s1是就行了出队列&#xff0c;先把s1中的元素全部出栈压入到s2中&#xff0c;弹出s2中的栈顶元素&#xff1b;再把s2的所有元素全部压回s1中 实现二 思路 s1是入栈的&#xff0c…

关于转正

经过一个月地狱式的考验之后&#xff0c;终于成功的转正了&#xff0c;过程也非常的艰辛&#xff0c;像把自己推到悬崖边上一样&#xff0c;不成功便成仁&#xff0c;最后还是挺过来了&#xff0c;感谢老大&#xff0c;感谢师兄&#xff0c;感谢自己&#xff0c;感谢亲爱的你。…

ACwing 5. 多重背包问题 II(二进制拆分+DP)

文章目录1. 题目2. 解题1. 题目 有 N 种物品和一个容量是 V 的背包。 第 i 种物品最多有 si 件&#xff0c;每件体积是 vi&#xff0c;价值是 wi。 求解将哪些物品装入背包&#xff0c;可使物品体积总和不超过背包容量&#xff0c;且价值总和最大。 输出最大价值。 输入格式…

排序:冒泡排序与选择排序

冒泡排序 冒泡排序&#xff08;英语&#xff1a;Bubble Sort&#xff09;是一种简单的排序算法。它重复地遍历要排序的数列&#xff0c;一次比较两个元素&#xff0c;如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换&#xff0c;也就是说该…

Spark Master的注册机制与状态管理

目录 1、Master接收注册的主要对象 2、Master接收Worker的注册 3、Master接收Driver的注册 4、Master处理Driver状态变化 5、Master接收Application的注册 6、Master处理Executor状态变化 1、Master接收注册的主要对象 Master主要接受注册的对象是&#xff1a;Applicatio…

排序:插入排序与希尔排序

插入排序 插入排序&#xff08;英语&#xff1a;Insertion Sort&#xff09;是一种简单直观的排序算法。它的工作原理是通过构建有序序列&#xff0c;对于未排序数据&#xff0c;在已排序序列中从后向前扫描&#xff0c;找到相应位置并插入。插入排序在实现上&#xff0c;在从…

jieba分词提取小说人名

文章目录1. 读入文本2. 分词3. 计数4. 排序5. 添加用户字典以《神雕侠侣》为例&#xff1a; 使用 jieba.posseg获取词性&#xff0c;人名的词性为 nr 1. 读入文本 import jieba.posseg as psg with open(shendiaoxialv.txt,encodingutf-8) as f:text f.readlines()print(te…

延迟加载

/*** namespace DOM Ready* 兼容某些页面头部没有引用jquery* function* param {Function} fn* example* DOMReady(fn)*/ window.DOMReady function() {var evt [],isReady false,guid 1,randomKey new Date();/** ignore 执行并销毁队列事件 */var fire function() {if …

Spark Worker源码

目录 1、概述 2、LaunchDriver 3、LaunchDriver 4、总结 1、概述 worker肯定是实现RPC通信的&#xff0c;否则别人没法给你发消息。他继承的是ThreadSafeRpcEndpoint&#xff0c;ThreadSafeRpcEndpoint是线程安全的&#xff0c;意味着处理一条消息完成后再处理下一个消息。换…

排序:快速排序与归并排序

快速排序 快速排序&#xff08;英语&#xff1a;Quicksort&#xff09;&#xff0c;又称划分交换排序&#xff08;partition-exchange sort&#xff09;&#xff0c;通过一趟排序将要排序的数据分割成独立的两部分&#xff0c;其中一部分的所有数据都比另外一部分的所有数据都…

LeetCode 764. 最大加号标志(DP)

文章目录1. 题目2. 解题1. 题目 在一个大小在 (0, 0) 到 (N-1, N-1) 的2D网格 grid 中&#xff0c;除了在 mines 中给出的单元为 0&#xff0c;其他每个单元都是 1。网格中包含 1 的最大的轴对齐加号标志是多少阶&#xff1f;返回加号标志的阶数。如果未找到加号标志&#xff…

Android启示录——开始Android旅途

为了明年可以开始进行android程序开发&#xff0c;开始从零开始学习android&#xff0c;仅以此代表第一步开始(*^_^*)&#xff0c;开始搭建环境…… 1. 软件下载 http://developer.android.com/sdk/index.html 下载Android开发所需的ADT、SDK....&#xff08;里面会有全部东西&…

机器学习基础—Kaggle泰坦尼克预测(完整分析)

1.引言 我们先找个简单的实际例子&#xff0c;来看看&#xff0c;所谓的数据挖掘或者机器学习实际应用到底是怎么样一个过程。 2.背景 2.1 关于Kaggle Kaggle是一个数据分析建模的应用竞赛平台&#xff0c;有点类似KDD-CUP&#xff08;国际知识发现和数据挖掘竞赛&#xff09;&…

Spark Executor解析

目录 1、Spark Executor如何工作 2、Spark Executor工作源码 1、Spark Executor如何工作 当Driver发送过来Task的时候&#xff0c;其实是发送给CoarseGrainedExecutorBackend这个RPCEndpoint&#xff0c;而不是直接发送给Executor&#xff08;Executor由于不是消息循环体永远…

Cassandra1.2文档学习(12)—— hint机制

参考文档:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/dml/dml_about_hh_c.html Hint机制是Cassandra的特性当一致性不要求时保证了写入的高可用性。但临时故障发生如网络问题&#xff0c;Hint机制显著地提升了反应的一致性。通过配置c…

LeetCode 381. O(1) 时间插入、删除和获取随机元素 - 允许重复(vector + 哈希)

文章目录1. 题目2. 解题1. 题目 设计一个支持在平均 时间复杂度 O(1) 下&#xff0c; 执行以下操作的数据结构。 注意: 允许出现重复元素。 insert(val)&#xff1a;向集合中插入元素 val。remove(val)&#xff1a;当 val 存在时&#xff0c;从集合中移除一个 val。getRando…

Stage划分和Task最佳位置

目录 1、Job Stage划分 2、Task最佳位置 3、总结 3.1 Stage划分总结&#xff1a; 3.2 Task最佳位置总结&#xff1a; 1、Job Stage划分 Spark Application中因为不同的Action触发众多的Job&#xff0c;也就是说一个Application中可以有很多的Job&#xff0c;每个Job是由是…

LwIP编译方法以及选项说明

条件编译命令作用说明IP_SOF_BROADCAST LWIP_IGMP 转载于:https://www.cnblogs.com/motadou/p/3537581.html