javascript实现在指定元素中垂直水平居中


Posted in Javascript onSeptember 13, 2015

本章节介绍一下如何实现未知宽高的元素在指定元素下实现垂直水平居中效果,下面就以span元素为例子,介绍一下如何实现span元素在div中实现水平垂直居中效果,代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<style type="text/css">
#box{
 width:200px;
 height:150px;
 background:blue;
 position:relative;
}
#antzone{
 background:green;
}
</style>
<script type="text/javascript">
window.onload=function(){
 var obox=document.getElementById("box");
 var oantzone=document.getElementById("antzone");
 var w=oantzone.offsetWidth;
 var h=oantzone.offsetHeight;
 oantzone.style.position="absolute";
 oantzone.style.left="50%";
 oantzone.style.top="50%";
 
 oantzone.style.marginLeft=-(w/2)+"px";
 oantzone.style.marginTop=-(h/2)+"px";
}
</script>
</head>
<body>
<div id="box">
 <spanj id="antzone">三水点靠木</span>
</div>
</body>
</html>

上面你的代码实现了span元素在div中垂直水平居中效果,下面简单介绍一下它的实现过程。

一.实现原理:
虽然css为明确给出span元素的尺寸,但是它毕竟有一个尺寸的,这个尺寸可以使用offsetWidth和offsetHeight属性获取,然后将此span元素设置为绝对定位,然后再将left和top属性值分别设置为50%,但是这个时候并不是span元素的中心点垂直水平居中,而是span元素的左上角垂直水平居中,然后在设置span元素的负的外边距,尺寸是span元素宽高的一半,这样就实现了垂直水平居中效果。

例子二:

思路:实现起来最麻烦的其实是水平居中和垂直居中,其中垂直居中是最麻烦的。考虑到浏览器兼容性,网上看了一些资料,发现在页面中垂直居中确实没有什么太好的办法。于是就采用了position:fixed属性控制时钟的绝对位置,通过clientWidth和clientHeight来获取时钟的宽和高,利用javascript控制marginLeft和marginTop来居中时钟。

<!doctype html> 
<html lang="en"> 
<head> 
  <meta charset="UTF-8"> 
  <title>Centered Clock</title> 
  <style type="text/css"> 
 
    body{ 
      background: #fff; 
    } 
 
    body, div, p{ 
      margin: 0; 
      padding: 0; 
    } 
     
    .center{ 
      position: fixed; 
      left: 50%; 
      top: 50%; 
    } 
 
    .box{ 
      border: 1px solid #000; 
      padding: 20px 30px; 
      font-size: 1.5em; 
      font-weight: 500; 
      margin: auto auto; 
    } 
 
  </style> 
</head> 
<body> 
  <div class="center"> 
    <p class="box"></p> 
  </div> 
</body> 
<script type="text/javascript"> 
  window.onload = function () { 
     
    getTimes(); 
    var box = document.getElementsByClassName("box")[0]; 
    box.style.marginLeft = -box.clientWidth / 2 + "px"; 
    box.style.marginTop = -box.clientHeight / 2 + "px"; 
    setInterval(getTimes, 1000); 
  } 
 
  function getTimes() { 
 
    var box = document.getElementsByClassName("box")[0]; 
 
    var dateTime = new Date(); 
    var year = dateTime.getFullYear(); 
    var date = dateTime.getDate(); 
    var month = dateTime.getMonth() + 1; 
    var hours = dateTime.getHours(); 
    var minutes = dateTime.getMinutes(); 
    var secondes = dateTime.getSeconds(); 
 
    box.innerHTML = year + "-" + format(month) + "-" + format(date) + " " + format(hours) + ":"+ format(minutes) +":" + format(secondes); 
  } 
 
  function format(a) { 
    return a.toString().replace(/^(\d)$/, "0$1"); 
  } 
 
</script> 
</html>

例子三:

思路:采用相对定位,设定left和top值为(pw-w)/2和(ph-h)/w,其中pw和ph为外部标签的宽与高,w和h为内部标签的宽与高。

核心代码:

javascript实现在指定元素中垂直水平居中
javascript实现在指定元素中垂直水平居中

以上就是给大家总结的三种javascript实现居中的例子,小伙伴们可以参考下,希望对大家能够有所帮助。

Javascript 相关文章推荐
细品javascript 寻址,闭包,对象模型和相关问题
Apr 27 Javascript
仅IE不支持setTimeout/setInterval函数的第三个以上参数
May 25 Javascript
javascript小组件 原生table排序表格脚本(兼容ie firefox opera chrome)
Jul 25 Javascript
Jquery 实现弹出层插件
Jan 28 Javascript
jQuery使用$.get()方法从服务器文件载入数据实例
Mar 25 Javascript
今天抽时间给大家整理jquery和ajax的相关知识
Nov 17 Javascript
Bootstrap页面布局基础知识全面解析
Jun 13 Javascript
JS+HTML5实现的前端购物车功能插件实例【附demo源码下载】
Oct 17 Javascript
Angular CLI 安装和使用教程
Sep 13 Javascript
vue.js指令v-for使用以及下标索引的获取
Jan 31 Javascript
基于layui的下拉列表的数据回显方法
Sep 24 Javascript
Node配合WebSocket做多文件下载以及进度回传
Nov 07 Javascript
window.onload使用指南
Sep 13 #Javascript
JS+CSS简单树形菜单实现方法
Sep 12 #Javascript
纯js代码实现未知宽高的元素在指定元素中垂直水平居中显示
Sep 12 #Javascript
JS实现超精简响应鼠标显示二级菜单代码
Sep 12 #Javascript
JS+CSS实现的简单折叠展开多级菜单效果
Sep 12 #Javascript
基于Arcgis for javascript实现百度地图ABCD marker的效果
Sep 12 #Javascript
jquery实现最简单的滑动菜单效果代码
Sep 12 #Javascript
You might like
十大催泪虐心动漫,你能坚持看到第几部?
2020/03/04 日漫
apache rewrite_module模块使用教程
2008/01/10 PHP
eAccelerator的安装与使用详解
2013/06/13 PHP
Thinkphp5.0自动生成模块及目录的方法详解
2017/04/17 PHP
javascript Ext JS 状态默认存储时间
2009/02/15 Javascript
js word表格动态添加代码
2010/06/07 Javascript
结合JQ1.9通过js正则判断各种浏览器版本的方法
2013/12/30 Javascript
JS实现漂亮的窗口拖拽效果(可改变大小、最大化、最小化、关闭)
2015/10/10 Javascript
ashx文件获取$.ajax()方法发送的数据
2016/05/26 Javascript
JQuery控制图片由中心点逐渐放大效果
2016/06/26 Javascript
localStorage实现便签小程序
2016/11/28 Javascript
nodejs中解决异步嵌套循环和循环嵌套异步的问题
2017/07/12 NodeJs
JS解析url查询参数的简单代码
2017/08/06 Javascript
node实现爬虫的几种简易方式
2019/08/22 Javascript
vue实现随机验证码功能(完整代码)
2019/12/10 Javascript
[06:09]辉夜杯主赛事开幕式
2015/12/25 DOTA
python requests 使用快速入门
2017/08/31 Python
Django中数据库的数据关系:一对一,一对多,多对多
2018/10/21 Python
python使用ddt过程中遇到的问题及解决方案【推荐】
2018/10/29 Python
用Python编写一个高效的端口扫描器的方法
2018/12/20 Python
Python通用函数实现数组计算的方法
2019/06/13 Python
Python调用OpenCV实现图像平滑代码实例
2020/06/19 Python
Python3爬虫带上cookie的实例代码
2020/07/28 Python
英国图书音像网站:Hive.co.uk(图书、电子书、DVD、蓝光、音乐CD等)
2017/10/16 全球购物
PHP如何对用户密码进行加密
2014/07/31 面试题
介绍一下Java的事务处理
2012/12/07 面试题
电子技术专业中专生的自我评价
2013/12/17 职场文书
计算机专业职业生涯规划范文
2014/01/19 职场文书
全民健身日活动方案
2014/01/29 职场文书
植树节活动总结
2014/04/30 职场文书
法英专业大学生职业生涯规划书范文
2014/09/22 职场文书
天堂的孩子观后感
2015/06/11 职场文书
幼儿园庆六一主持词
2015/06/30 职场文书
公司车队管理制度
2015/08/04 职场文书
python 实现两个变量值进行交换的n种操作
2021/06/02 Python
浅谈MySql update会锁定哪些范围的数据
2022/06/25 MySQL