1. 程式人生 > >視窗縮放導致頁面排版錯亂的解決方法

視窗縮放導致頁面排版錯亂的解決方法

簡單的說就是設定body的寬度,那麼如何動態的獲取瀏覽器減去側邊滾動條之後的寬度,原理就是通過建立一個帶有

滾動條的div(也就是overflow:scroll),利用offsetWidth-clientWidth得到滾動條的寬度,再利用

window.screen.availWidth減去滾動條的寬度即可得到瀏覽器除了滾動條以外的寬度,body再設定該寬度,即可解決

縮放排版錯亂的問題,程式碼展示如下

function setBodyWidth(){
	var barWidthHelper=document.createElement('div');
	barWidthHelper.style.cssText="overflow:scroll; width:100px; height:100px;";
	document.body.appendChild(barWidthHelper);
	var barWidth=barWidthHelper.offsetWidth-barWidthHelper.clientWidth;
	document.body.removeChild(barWidthHelper);
	var bodyWidth=window.screen.availWidth-barWidth;
	return bodyWidth;
}
			
$(document).ready(
	function(){
		var bodyWidth=setBodyWidth()+"px";
		//document.body.style.width=bodyWidth;
		$("body").css("width",bodyWidth);
	}
);


順便提一下clientWidth與offsetWidh的示意圖


然後window.screen.availHeight與window.screen.height的區別就是一個工作列高度的區別。

相關推薦

視窗導致頁面排版錯亂解決方法

簡單的說就是設定body的寬度,那麼如何動態的獲取瀏覽器減去側邊滾動條之後的寬度,原理就是通過建立一個帶有 滾動條的div(也就是overflow:scroll),利用offsetWidth-clientWidth得到滾動條的寬度,再利用 window.screen.ava

vue v-for的陣列改變導致頁面不渲染解決方法

直接在數組裡,改變陣列來達到重新渲染頁面的目的, 需要用push等陣列方法, 或者$set(),或者給陣列重新賦值,來改變陣列引用地址 而是直接索引= <body> <div id="app"> <li v-for='item in student

HTML控制元件高度變化導致頁面抖動的解決方法

偶爾遇到當HTML元素高度變化時,HTML元素的高度剛好與父控制元件大小相同,但是又沒有超出父控制元件的邊緣,這時候,如果一個元素多了1px,那麼控制元件就會頻繁在滾動條顯示/隱藏間變動,使得網頁無緣無故的抖動,很是影響使用者體驗。 可以使用以下CSS程式碼解決 html

問題解決——MFC SDI程式 CFormView中控制元件隨視窗

從來都是做對話方塊程式,這次想做個SDI的程式,想著用一下帶Robbin介面的office2007風格,就不用使用那些花錢的商業控制元件/UI庫了。 如果你不想看我打的文字,可以直接拷走程式碼,自己宣告上定義再略作修改就可以用了,不需大的修改。 -----------------------

解決在Vue專案中時常因為程式碼導致頁面報錯的問題

前言 如果我們初次使用vue-cli來構建單頁SPA應用,在擼程式碼的過程中有可能會遇到這種因為程式碼縮排導致 頁面報錯的問題,導致我們煩不勝煩。接下來我們就來看一看如何解決這個小問題。。。

rem布局進入頁面樣式錯亂解決

return color 顯示 display add 進入 遇到 client ner 開發項目時候第一次遇到rem布局進入頁面瞬間樣式錯亂問題: //該段js為rem布局應用 如10px = 0.1rem; (function(doc, win) { var

Android 修改系統字型大小,導致頁面展示異常解決方案

Android系統預設是允許修改系統本身的字型大小的,導致頁面展示異常。 頁面展示異常是因為系統字型大小影響到了程式中字型的單位sp,所以解決此問題的方案1是,將佈局中字型大小的單位sp換成dp 解決方案2:重寫Activity或Application中的getResou

PyQt5無邊框視窗的標題拖動和視窗實現

網上找了半天都找不到好用的PyQt5無邊框視窗的實現 借鑑部分前輩的視窗拖放程式碼 自己搗鼓了一下,實現了一下無邊框視窗,問題可能還有一點,慢慢改吧 先做個筆記 py檔案 #!/usr/bin/env python #-*- coding:utf-

我的YUV播放器MFC小筆記:設定picture控制元件背景為黑色、視窗

影象的顯示主要使用picture控制元件,一般播放器,在初始化時,播放畫面的區域背景都是黑色的,在YUV播放器,也如此。但在網上找了很久的資料才實現該功能,其實說白了,程式碼很簡單,在OnPaint函式中將picture畫為黑色即可。程式碼: //picture控制

實現ipad上的內嵌webview手勢圖片(修改版,解決在第一張圖片放大的情況下翻到下一張圖片無法放大的問題) 基於Quo(js庫)

      這是自己在一個專案中用到的,可以根據手勢(兩個手指的拖放放大1.2,1.4,1.6倍圖片,然後捏放下回復到原來大小,只要修改引數就可以無限放大和縮小圖片的倍數) 下面是quo支援的手勢: 以下為實現ipad  iso 上面的web頁面(jsp)放大三倍,

安卓等間取樣演算法的實現與解決ZXing生成DATA MATRIX二維碼太小的問題

按我的上一篇文章所述,修改生成二維碼的方法後,成功生成了DATA MATRIX格式的二維碼,然而,這個二維碼實在太小,以至於竟然看不見,堪比小芝麻。而Bitmap.createScaleBitmap()方法放大的圖片又十分模糊,無法使用。 於是,尋找了等間

js控制螢幕高度自適應 切換螢幕/視窗仍然保持自適應

公共js方法如下://內容自適應視窗大小 function resizeEle(ele, isResetH, IsResetW) { var windowWidth = getPageSize(

華為自帶瀏覽器虛擬導航欄導致頁面顯示問題解決辦法

通過js識別華為瀏覽器 對dom做特殊處理 const ua = navigator.userAgent; if (

ubuntu 使用sudo apt-get update 出現 被配置多次導致無法升級錯誤解決方法

code 開發機 goup 使用 lin logs 配置 周末 ubun 這個周六周末在考慮升級自己GPU開發機,在琢磨使用docker來按轉tensorflow環境,在升級軟件的時候爆出了如下錯誤 在 /etc/apt/sources.list.d/sogoupin

android動畫的兩種實現方法

get odi omx rac tor Coding eight rpo odin 在android開發。我們會常常使用到縮放動畫,普通情況下縮放動畫有兩種實現方式。一種是直接通過java代碼去實現,第二種是通過配置文件實現動畫,以下是兩種動畫的基本是用法: Ja

CSS實現背景圖尺寸不隨瀏覽器而變化的兩種方法

簡單 fix chrom per 實現 瀏覽器 webkit 只需要 div 方法一. 把圖片作為background 有幾個CSS的屬性要提一下:background-size:cover,這個CSS3的屬性作用是把背景圖像擴展至足夠大,以使背景圖像完全覆蓋背景區域,背景

QT中給各控件增加背景圖片(可可旋轉)的幾種方法

.net detail eight iou rotate art board 按鈕 previous 1. 給QPushButton 增加背景圖片:背景圖片可根據Button大小自由縮放。 [cpp] view plain copy vo

點擊瀏覽器的返回按鈕或者手機上的返回按鈕頁面刷新解決方法

ati cat blog 解決方法 func 瀏覽器 on() try body 在頁面中的js代碼中加上下面這句話即可。window.onload = function(){ var url = window.location.href; va

Vue使用jQuery ajax載入資料頁面無顯示解決方法

無資料程式碼為  <script> new Vue({ el:"#demo", data:{list:find()} }) function find(){ var ss; $.ajax(

react-router browserHistory重新整理頁面404問題解決方法

使用React開發新專案時,遇見了重新整理頁面,直接訪問二級或三級路由時,訪問失敗,出現404或資源載入異常的情況,本篇針對此問題進行分析並總結解決方案。 背景 使用webpack-dev-server做本地開發伺服器時,正常情況只需要簡單使用webpack-dev-server指令啟動即可,但是當專案處