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 相关文章推荐
web性能优化之javascript性能调优
Dec 28 Javascript
jquery事件preventDefault()方法用法实例
Jan 16 Javascript
javascript发送短信验证码实现代码
Nov 12 Javascript
JS前端加密算法示例
Dec 22 Javascript
关于Promise 异步编程的实例讲解
Sep 01 Javascript
seajs中最常用的7个功能、配置示例
Oct 10 Javascript
vue路由懒加载的实现方法
Mar 12 Javascript
JavaScript设计模式之命令模式实例分析
Jan 16 Javascript
Nuxt项目支持eslint+pritter+typescript的实现
May 20 Javascript
浅谈VUE防抖与节流的最佳解决方案(函数式组件)
May 22 Javascript
使用 Element UI Table 的 slot-scope方法
Oct 10 Javascript
vue-router 中 meta的用法详解
Nov 01 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
php中使用Imagick实现图像直方图的实现代码
2011/08/30 PHP
两级联动select刷新后其值保持不变的实现方法
2014/01/27 PHP
php 魔术方法详解
2014/11/11 PHP
PHP+Ajax异步带进度条上传文件实例
2016/11/01 PHP
thinkPHP中_initialize方法实例分析
2016/12/05 PHP
JScript中的&quot;this&quot;关键字使用方式补充材料
2007/03/08 Javascript
【消息提示组件】,兼容IE6/7&amp;&amp;FF2
2007/09/04 Javascript
javascript 去字符串空格终极版(支持utf8)
2009/11/14 Javascript
js解析与序列化json数据(二)序列化探讨
2013/02/01 Javascript
HTML Color Picker(js拾色器效果)
2013/08/27 Javascript
JavaScript使用循环和分割来替换和删除元素实例
2014/10/13 Javascript
详解在Angularjs中ui-sref和$state.go如何传递参数
2017/04/24 Javascript
使用 Vue 绑定单个或多个 Class 名的实例代码
2018/01/08 Javascript
基于 D3.js 绘制动态进度条的实例详解
2018/02/26 Javascript
原生JS实现的轮播图功能详解
2018/08/06 Javascript
vue.js多页面开发环境搭建过程
2019/04/24 Javascript
JS异步错误捕获的一些事小结
2019/04/26 Javascript
Vue 实现分页与输入框关键字筛选功能
2020/01/02 Javascript
R语言 vs Python对比:数据分析哪家强?
2017/11/17 Python
Python 实现取矩阵的部分列,保存为一个新的矩阵方法
2018/11/14 Python
Python math库 ln(x)运算的实现及原理
2019/07/17 Python
10行Python代码计算汽车数量的实现方法
2019/10/23 Python
Python中xml和dict格式转换的示例代码
2019/11/07 Python
Keras - GPU ID 和显存占用设定步骤
2020/06/22 Python
pytorch中index_select()的用法详解
2021/01/06 Python
django inspectdb 操作已有数据库数据的使用步骤
2021/02/07 Python
澳大利亚在线时尚精品店:Hello Molly
2018/02/26 全球购物
德国婴儿服装和婴儿用品购买网站:Baby Sweets
2019/12/08 全球购物
情侣吵架检讨书
2014/02/05 职场文书
3分钟演讲稿
2014/04/30 职场文书
球队口号
2014/06/18 职场文书
会计实训报告范文
2014/11/04 职场文书
党校毕业个人总结
2015/02/28 职场文书
2015年幼儿园教育教学工作总结
2015/05/25 职场文书
导游词之山东八仙过海景区
2019/11/11 职场文书
mysql查询的控制语句图文详解
2021/04/11 MySQL