js实现网页 高度和宽度成比例的代码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js实现网页 高度和宽度成比例的代码相关的知识,希望对你有一定的参考价值。

网页可见区域宽:document.body.clientWidth
网页可见区域高:document.body.clientHeight
网页可见区域宽:document.body.offsetWidth (包括边线的宽)
网页可见区域高:document.body.offsetHeight (包括边线的宽)
网页正文全文宽:document.body.scrollWidth
网页正文全文高:document.body.scrollHeight
网页被卷去的高:document.body.scrollTop
网页被卷去的左:document.body.scrollLeft
网页正文部分上:window.screenTop
网页正文部分左:window.screenLeft
屏幕分辨率的高:window.screen.height
屏幕分辨率的宽:window.screen.width
屏幕可用工作区高度:window.screen.availHeight
屏幕可用工作区宽度:window.screen.availWidth

html精确定位:scrollLeft,scrollWidth,clientWidth,offsetWidth
scrollHeight: 获取对象的滚动高度。
scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离
scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离
scrollWidth:获取对象的滚动宽度
offsetHeight:获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的高度
offsetLeft:获取对象相对于版面或由 offsetParent 属性指定的父坐标的计算左侧位置
offsetTop:获取对象相对于版面或由 offsetTop 属性指定的父坐标的计算顶端位置
event.clientX 相对文档的水平座标
event.clientY 相对文档的垂直座标
event.offsetX 相对容器的水平坐标
event.offsetY 相对容器的垂直坐标
document.documentElement.scrollTop 垂直方向滚动的值
event.clientX+document.documentElement.scrollTop 相对文档的水平座标+垂直方向滚动的量

IE,FireFox 差异如下:

IE6.0、FF1.06+:
clientWidth = width + padding
clientHeight = height + padding
offsetWidth = width + padding + border
offsetHeight = height + padding + border

IE5.0/5.5:
clientWidth = width - border
clientHeight = height - border
offsetWidth = width
offsetHeight = height

(需要提一下:CSS中的margin属性,与clientWidth、offsetWidth、clientHeight、offsetHeight均无关)
网页可见区域宽: document.body.clientWidth
网页可见区域高: document.body.clientHeight
网页可见区域宽: document.body.offsetWidth (包括边线的宽)
网页可见区域高: document.body.offsetHeight (包括边线的高)
网页正文全文宽: document.body.scrollWidth
网页正文全文高: document.body.scrollHeight
网页被卷去的高: document.body.scrollTop
网页被卷去的左: document.body.scrollLeft
网页正文部分上: window.screenTop
网页正文部分左: window.screenLeft
屏幕分辨率的高: window.screen.height
屏幕分辨率的宽: window.screen.width
屏幕可用工作区高度: window.screen.availHeight
屏幕可用工作区宽度: window.screen.availWidth
-------------------

技术要点

本节代码主要使用了Document对象关于窗口的一些属性,这些属性的主要功能和用法如下。

要得到窗口的尺寸,对于不同的浏览器,需要使用不同的属性和方法:若要检测窗口的真实尺寸,在Netscape下需要使用Window的属性;在
IE下需要 深入Document内部对body进行检测;在DOM环境下,若要得到窗口的尺寸,需要注意根元素的尺寸,而不是元素。

Window对象的innerWidth属性包含当前窗口的内部宽度。Window对象的innerHeight属性包含当前窗口的内部高度。

Document对象的body属性对应HTML文档的标签。Document对象的documentElement属性则表示HTML文档的根节点。

document.body.clientHeight表示HTML文档所在窗口的当前高度。document.body. clientWidth表示HTML文档所在窗口的当前宽度。

实现代码

复制代码 代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>请调整浏览器窗口</title>
<meta http-equiv="content-type" content="text/html; charset=gb2312">
</head>
<body>
<h2 align="center">请调整浏览器窗口大小</h2><hr>
<form action="#" method="get" name="form1" id="form1">
<!--显示浏览器窗口的实际尺寸-->
浏览器窗口 的 实际高度: <input type="text" name="availHeight" size="4"><br>
浏览器窗口 的 实际宽度: <input type="text" name="availWidth" size="4"><br>
</form>
<script type="text/javascript">
<!--
var winWidth = 0;
var winHeight = 0;
function findDimensions() //函数:获取尺寸

//获取窗口宽度
if (window.innerWidth)
winWidth = window.innerWidth;
else if ((document.body) && (document.body.clientWidth))
winWidth = document.body.clientWidth;
//获取窗口高度
if (window.innerHeight)
winHeight = window.innerHeight;
else if ((document.body) && (document.body.clientHeight))
winHeight = document.body.clientHeight;
//通过深入Document内部对body进行检测,获取窗口大小
if (document.documentElement && document.documentElement.clientHeight && document.documentElement.clientWidth)

winHeight = document.documentElement.clientHeight;
winWidth = document.documentElement.clientWidth;

//结果输出至两个文本框
document.form1.availHeight.value= winHeight;
document.form1.availWidth.value= winWidth;

findDimensions();
//调用函数,获取数值
window.onresize=findDimensions;
//-->
</script>
</body>
</html>

源程序解读
(1)程序首先建立一个表单,包含两个文本框,用于显示窗口当前的宽度和高度,并且,其数值会随窗口大小的改变而变化。

(2)在随后的JavaScript代码中,首先定义了两个变量winWidth和winHeight,用于保存窗口的高度值和宽度值。

(3)然后,在函数findDimensions ( )中,使用window.innerHeight和window.innerWidth得到窗口的高度和宽度,并将二者保存在前述两个变量中。

(4)再通过深入Document内部对body进行检测,获取窗口大小,并存储在前述两个变量中。

(5)在函数的最后,通过按名称访问表单元素,结果输出至两个文本框。

(6)在JavaScript代码的最后,通过调用findDimensions ( )函数,完成整个操作。追问

能直接给个实现代码吗 宽度确定 使高度等于宽度一半

参考技术A 你是要实现网页还是图片成比例缩放啊?
我这有个图片成比例缩放的JS代码,如下:
<script type="text/javascript">
//自动缩放图片尺寸
//参数:图片对象,最大宽度,最大高度
function gw_js_chgimg_wh(obj,width,height)
var image=new Image();
image.src=obj.src; //获取图像路径
var width1=image.width; //获取图像宽度
var height1=image.height; //获取图像高度
var w=width1/width;
var h=height1/height;
if(width1<width && height1<height)
obj.width=width1;
obj.height=height1;
else
if(h>w)
obj.height=height;
obj.width=width1*height/height1;
else
obj.width=width;
obj.height=height1*width/width1;



</script>
如果你是要网页成比例的代码,具体是要实现什么样的功能?请描述清楚一点,好方便理解。

CSS/JS 图片高度固定宽度按比例显示 (纯CSS方法和CSS+JS方法)

目录

一、CSS+JS方法

介绍

思路

样例代码

二、纯CSS

思路

样例代码


一、CSS+JS方法

介绍

我这边用的是Vue+Vant,在手机端显示一张图片,高度固定为屏幕的60%,宽度按照比例缩放,超出屏幕宽度部分不显示。

思路

css中吧高度和其他样式都写好,通过js计算应该设置的宽度。我们获得到屏幕的高度*60%,在查看原图长宽比按照比例获得宽度的像素。

样例代码

<van-image
      class="login_pic"
      :style="getWidth()"
      :src="require('../../assets/hands.jpg')"
/>
.login_pic{
  left:0px;
  top:0px;
  height:60%;
  overflow:hidden;
  position:fixed;
  z-index: 9;
}
getWidth(){
      let height = window.screen.height * 0.6 //获得屏幕高度的60%
      let width = 2880 * height / 1670 //原图尺寸为2880*1670,这里是按比例获得对应的宽度像素
      return { "width": width + 'px' };
},

二、纯CSS

和上面实现同样的功能

思路

在这里,图片是作为div的background image使用的,使用了background-image的一些特性完成了这个功能。

样例代码

<div class="login_pic2"></div>
.login_pic2 {
  position: absolute;
  top: 0;
  left: 0;
  overflow:hidden;
  width: 100%;
  height: 60%;
  background-image: url(../../assets/hands.jpg);
  background-repeat: no-repeat;
  -moz-background-size:100% 100%; 
  background-size:100% 100%;
  background-size: cover;
}

 

以上是关于js实现网页 高度和宽度成比例的代码的主要内容,如果未能解决你的问题,请参考以下文章

CSS/JS 图片高度固定宽度按比例显示 (纯CSS方法和CSS+JS方法)

手机网页大小怎么调整

如何让网页自适应所有屏幕宽度

判断显示器分辨率,并实现网页缩放,类似于浏览器缩小比例的js代码

HTML响应式布局实现详解

想用jQuery mobile js 做网页的自适应大小宽度的改变,就是当网页宽度变小时页面还是显示的原来所有内容