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 相关文章推荐
游戏人文件夹程序 ver 3.0
Jul 14 Javascript
一个挺有意思的Javascript小问题说明
Sep 26 Javascript
JavaScript跨平台的开源框架NativeScript
Mar 24 Javascript
jQuery实现文本框邮箱输入自动补全效果
Nov 17 Javascript
JavaScript设计模式开发中组合模式的使用教程
May 18 Javascript
JavaScript数组实现数据结构中的队列与堆栈
May 26 Javascript
JS实现控制图片显示大小的方法【图片等比例缩放功能】
Feb 18 Javascript
Angular.js指令学习中一些重要属性的用法教程
May 24 Javascript
VueJS事件处理器v-on的使用方法
Sep 27 Javascript
vue按需加载实例详解
Sep 06 Javascript
Bootstrap简单实用的表单验证插件BootstrapValidator用法实例详解
Mar 29 Javascript
微信小程序返回上一级页面的实现代码
Jun 19 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
如何正确配置Nginx + PHP
2016/07/15 PHP
PHP入门教程之字符串处理技巧总结(转换,过滤,解析,查找,截取,替换等)
2016/09/11 PHP
LBS blog sql注射漏洞[All version]-官方已有补丁
2007/08/26 Javascript
javascript对象之内置对象Math使用方法
2010/04/16 Javascript
通过百度地图获取公交线路的站点坐标的js代码
2012/05/11 Javascript
js实现上传图片之上传前预览图片
2013/03/25 Javascript
浅析jQuery(function(){})与(function(){})(jQuery)之间的区别
2014/01/09 Javascript
js阻止浏览器默认行为触发的通用方法(推荐)
2016/05/15 Javascript
AngularJS 避繁就简的路由
2016/07/01 Javascript
Vuejs第十篇之vuejs父子组件通信
2016/09/06 Javascript
jQuery在ie6下无法设置select选中的解决方法详解
2016/09/20 Javascript
基于vue的下拉刷新指令和滚动刷新指令
2016/12/23 Javascript
分分钟玩转Vue.js组件(二)
2017/03/01 Javascript
记一次webapck4 配置文件无效的解决历程
2018/09/19 Javascript
koa router 多文件引入的方法示例
2019/05/22 Javascript
JavaScript在web自动化测试中的作用示例详解
2019/08/25 Javascript
[03:00]《DAC最前线》之欧美新秀VS老将
2015/02/01 DOTA
Python实现pdf文档转txt的方法示例
2018/01/19 Python
Python+request+unittest实现接口测试框架集成实例
2018/03/16 Python
python变量赋值方法(可变与不可变)
2019/01/12 Python
详解python配置虚拟环境
2019/04/08 Python
PyTorch: 梯度下降及反向传播的实例详解
2019/08/20 Python
Python终端输出彩色字符方法详解
2020/02/11 Python
Jupyter Notebook输出矢量图实例
2020/04/14 Python
推荐值得学习的12款python-web开发框架
2020/08/10 Python
Python 处理日期时间的Arrow库使用
2020/08/18 Python
浅析css3中matrix函数的使用
2016/06/06 HTML / CSS
欧洲最古老的鞋厂:Peter Kaiser
2019/11/05 全球购物
高中生评语大全
2014/04/25 职场文书
负责人任命书范本
2014/06/04 职场文书
大专生找工作自荐书
2014/06/10 职场文书
优秀员工推荐材料
2014/12/20 职场文书
大学生敬老院活动总结
2015/05/07 职场文书
教师教育心得体会
2016/01/19 职场文书
深入理解python多线程编程
2021/04/18 Python
python获取淘宝服务器时间的代码示例
2021/04/22 Python