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 相关文章推荐
用jscript实现列出安装的软件列表
Jun 18 Javascript
javascript中关于执行环境的杂谈
Aug 14 Javascript
js有关元素内容操作小结
Dec 20 Javascript
javascript中验证大写字母、数字和中文
Jan 15 Javascript
jQuery:delegate中select()不起作用的解决方法(实例讲解)
Jan 26 Javascript
JavaScript取得键盘按下方向键是哪个的方法
Aug 04 Javascript
javascript中alert()与console.log()的区别
Aug 26 Javascript
AngularJS中的$watch(),$digest()和$apply()区分
Apr 04 Javascript
基于JS实现的笛卡尔乘积之商品发布
May 13 Javascript
JQuery validate插件Remote用法大全
May 15 Javascript
JS库particles.js创建超炫背景粒子插件(附源码下载)
Sep 13 Javascript
使用Angular-CLI构建NPM包的方法
Sep 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
PHP 快速排序算法详解
2014/11/10 PHP
WordPress的主题编写中获取头部模板和底部模板
2015/12/28 PHP
php+jquery+html实现点击不刷新加载更多的实例代码
2016/08/12 PHP
PHP对称加密函数实现数据的加密解密
2016/10/27 PHP
启用OPCache提高PHP程序性能的方法
2019/03/21 PHP
js自动查找select下拉的菜单并选择(示例代码)
2014/02/26 Javascript
javascript回车完美实现tab切换功能
2014/03/13 Javascript
谈谈javascript中使用连等赋值操作带来的问题
2015/11/26 Javascript
如何利用AngularJS打造一款简单Web应用
2015/12/05 Javascript
javascript返回顶部的按钮实现方法
2016/01/09 Javascript
APP中javascript+css3实现下拉刷新效果
2016/01/27 Javascript
JS读取XML文件数据并以table形式显示数据的方法(兼容IE与火狐)
2016/06/02 Javascript
jquery图片放大镜效果
2017/06/23 jQuery
详解win7 cmd执行vue不是内部命令的解决方法
2017/07/27 Javascript
使用jQuery实现两个div中按钮互换位置的实例代码
2017/09/21 jQuery
vue.js vue-router如何实现无效路由(404)的友好提示
2017/12/20 Javascript
vue devtools的安装与使用教程
2018/08/08 Javascript
element-ui 时间选择器限制范围的实现(随动)
2019/01/09 Javascript
Python中Selenium模拟JQuery滑动解锁实例
2017/07/26 Python
Python实现常见的回文字符串算法
2018/11/14 Python
python对列进行平移变换的方法(shift)
2019/01/10 Python
python图像和办公文档处理总结
2019/05/28 Python
Flask模板引擎之Jinja2语法介绍
2019/06/26 Python
python英语单词测试小程序代码实例
2019/09/09 Python
美国美妆网站:B-Glowing
2016/10/12 全球购物
意大利专业化妆品品牌:KIKO MILANO
2017/02/01 全球购物
娇韵诗Clarins意大利官方网站:法国天然护肤品牌
2020/03/11 全球购物
介绍JAVA 中的Collection FrameWork(及如何写自己的数据结构)
2014/10/31 面试题
学习决心书
2014/03/11 职场文书
请假条的格式
2014/04/11 职场文书
关于诚信的活动方案
2014/08/18 职场文书
学校领导干部民主生活会整改方案
2014/09/29 职场文书
村主任“四风”问题个人整改措施
2014/10/04 职场文书
异地恋情人节寄语
2015/02/28 职场文书
青岛市的收音机研制与生产
2022/04/07 无线电
Win10多屏显示如何设置?Win10电脑多屏显示设置操作方法
2022/07/07 数码科技