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 相关文章推荐
讲两件事:1.this指针的用法小探. 2.ie的attachEvent和firefox的addEventListener在事件处理上的区别
Apr 12 Javascript
jquery+ashx无刷新GridView数据显示插件(实现分页、排序、过滤功能)
Apr 25 Javascript
JS打开新窗口的2种方式
Apr 18 Javascript
qq悬浮代码(兼容各个浏览器)
Jan 29 Javascript
Node.js中的事件驱动编程详解
Aug 16 Javascript
javascript实现画不相交的圆
Apr 07 Javascript
基于JavaScript实现窗口拖动效果
Jan 18 Javascript
jsonp跨域请求详解
Jul 13 Javascript
CheckBox多选取值及判断CheckBox选中是否为空的实例
Oct 31 Javascript
解决Vue 浏览器后退无法触发beforeRouteLeave的问题
Dec 24 Javascript
extjs图形绘制之饼图实现方法分析
Mar 06 Javascript
VUE实时监听元素距离顶部高度的操作
Jul 29 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/06 日漫
discuz程序的PHP加密函数原理分析
2011/08/05 PHP
PHP函数getenv简介和使用实例
2014/05/12 PHP
php实现压缩多个CSS与JS文件的方法
2014/11/11 PHP
javascript入门·图片对象(无刷新变换图片)\滚动图像
2007/10/01 Javascript
JQuery 国际象棋棋盘 实现代码
2009/06/26 Javascript
javascript日期处理函数,性能优化批处理
2015/09/06 Javascript
jquery拖拽效果完整实例(附demo源码下载)
2016/01/14 Javascript
Jquery与Bootstrap实现后台管理页面增删改查功能示例
2017/01/22 Javascript
angularjs+bootstrap菜单的使用示例代码
2017/03/07 Javascript
AngularJS实用基础知识_入门必备篇(推荐)
2017/07/10 Javascript
bootstrap datetimepicker控件位置异常的解决方法
2017/11/23 Javascript
详解vuex的简单使用
2018/03/12 Javascript
Vue 请求传公共参数的操作
2020/07/31 Javascript
谈谈JavaScript中的函数
2020/09/08 Javascript
vue中实现点击变成全屏的多种方法
2020/09/27 Javascript
Vue实现一种简单的无限循环滚动动画的示例
2021/01/10 Vue.js
[01:28]2014DOTA2国际邀请赛中国区预选赛四大豪门直升机抵达会场
2014/05/24 DOTA
python命令行解析之parse_known_args()函数和parse_args()使用区别介绍
2018/01/24 Python
浅谈python中字典append 到list 后值的改变问题
2018/05/04 Python
TensorFlow用expand_dim()来增加维度的方法
2018/07/26 Python
Python基本数据结构之字典类型dict用法分析
2019/06/08 Python
Python列表删除元素del、pop()和remove()的区别小结
2019/09/11 Python
使用 pytorch 创建神经网络拟合sin函数的实现
2020/02/24 Python
使用Django实现把两个模型类的数据聚合在一起
2020/03/28 Python
Selenium执行完毕未关闭chromedriver/geckodriver进程的解决办法(java版+python版)
2020/12/07 Python
幼儿园教育教学反思
2014/01/31 职场文书
程序员求职信
2014/04/16 职场文书
四风问题自我剖析材料
2014/10/07 职场文书
销售经理岗位职责
2015/01/31 职场文书
保送生自荐信
2015/03/06 职场文书
大学体育课感想
2015/08/10 职场文书
MySQL之DML语言
2021/04/05 MySQL
CSS预处理框架——Stylus
2021/04/21 HTML / CSS
SqlServer数据库远程连接案例教程
2021/07/15 SQL Server
Python内置数据类型中的集合详解
2022/03/18 Python