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 相关文章推荐
漂亮的widgets,支持换肤和后期开发新皮肤
Apr 23 Javascript
JavaScript中的History历史对象
Jan 16 Javascript
JSON为什么那样红为什么要用json(另有洞天)
Dec 26 Javascript
javascript判断机器是否联网的2种方法
Aug 09 Javascript
js的正则test,match,exec详细解析
Jan 29 Javascript
js数值计算时使用parseInt进行数据类型转换(jquery)
Oct 07 Javascript
jQuery实现仿路边灯箱广告图片轮播效果
Apr 15 Javascript
基于Vue制作组织架构树组件
Dec 06 Javascript
vue+axios+mock.js环境搭建的方法步骤
Aug 28 Javascript
Vue 动态添加路由及生成菜单的方法示例
Jun 20 Javascript
vue中get请求如何传递数组参数的方法示例
Nov 08 Javascript
vue前端和Django后端如何查询一定时间段内的数据
Feb 28 Vue.js
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防注入,表单提交值转义的实现详解
2013/06/10 PHP
PHP准确取得服务器IP地址的方法
2015/06/02 PHP
PHP使用微信开发模式实现搜索已发送图文及匹配关键字回复的方法
2017/09/13 PHP
phpStudy 2016 使用教程详解(支持PHP7)
2017/10/18 PHP
PHP操作Postgresql封装类与应用完整实例
2018/04/24 PHP
JQuery上传插件Uploadify使用详解及错误处理
2010/04/27 Javascript
前后台交互过程中json格式如何解析以及如何生成
2012/12/26 Javascript
jQuery仿Excel表格编辑功能的实现代码
2013/05/01 Javascript
jQuery 文本框得失焦点的简单实例
2014/02/19 Javascript
js实现顶部可折叠的菜单工具栏效果实例
2015/05/09 Javascript
Jquery基础之事件操作详解
2016/06/14 Javascript
JavaScript ES6的新特性使用新方法定义Class
2016/06/28 Javascript
微信小程序 触控事件详细介绍
2016/10/17 Javascript
xcode中获取js文件的路径方法(推荐)
2016/11/05 Javascript
Ajax异步获取html数据中包含js方法无效的解决方法
2017/02/20 Javascript
ionic 3.0+ 项目搭建运行环境的教程
2017/08/09 Javascript
javaScript动态添加Li元素的实例
2018/02/24 Javascript
js String.prototype.trim字符去前后空格的扩展
2020/08/23 Javascript
[00:34]拔城逐梦,热血永恒!2020(秋)完美世界城市挑战赛报名开启
2020/10/09 DOTA
Python中__init__.py文件的作用详解
2016/09/18 Python
pandas使用get_dummies进行one-hot编码的方法
2018/07/10 Python
使用PyCharm创建Django项目及基本配置详解
2018/10/24 Python
利用Python实现Shp格式向GeoJSON的转换方法
2019/07/09 Python
python与idea的集成的实现
2020/11/20 Python
css3动画效果抖动解决方法
2018/09/03 HTML / CSS
时尚、社区、科技:SEVENSTORE
2019/04/26 全球购物
Moda Operandi官网:美国奢侈品电商,海淘秀场T台同款
2020/05/26 全球购物
留学推荐信中文范文三篇
2014/01/25 职场文书
元旦红领巾广播稿
2014/02/19 职场文书
学校献爱心活动总结
2014/07/08 职场文书
应用心理学专业求职信
2014/08/04 职场文书
广告业务员岗位职责
2015/02/13 职场文书
毕业论文致谢信
2015/05/14 职场文书
党员转正党支部意见
2015/06/02 职场文书
原生CSS实现文字无限轮播的通用方法
2021/03/30 HTML / CSS
Vue Element-ui表单校验规则实现
2021/07/09 Vue.js