您好,登錄后才能下訂單哦!
先說下簡單的思路:
1.獲得窗口的大小,高度,寬度。
2.要知道顯示的圖片(我這里用圖片舉例)的大小,寬,高。(我的圖片顯示設置為 寬:960,高600 )
3.簡單算法,獲得的瀏覽器寬,高 減去 圖片的寬,高 除以2 就是 間隔距離了。
4.當然還有獲得窗口放大,縮小的事件了。根據(jù)事件來設置(margin)。
首先將圖片弄到body里面,代碼如下:
body 里面就只有兩個div 圖片套了一下。 加點 CSS 樣式:(吐槽下:我對CSS 不專業(yè)。)
- <body>
- <div id="_total">
- <div id="_back">
- <img id="_mag" src="p_w_picpaths/1.jpg"/>
- </div>
- </div>
- </body>
- <style type="text/css">
- #_back{
- border:#F00 1px solid;
- z-index:0;
- text-align:center;
- padding:0px 0px 0px 0px;
- }
- #_total {
- width:960px;
- height:600px
- border: 1px solid black;
- position: relative;
- padding:0px 0px 0px 0px;
- }
- #_mag {
- width:960px;
- height:600px
- padding:0px 0px 0px 0px;
- }
- </style>
重點是下面的代碼:
- <script type="text/javascript" src="js/jquery.js"></script>
- <script type="text/javascript" src="js/jquery.ba-resize.js"></script>
先解釋下: jquery自帶的 resize() 方法是可以監(jiān)聽窗口放大縮小事件的。 但是我在網上搜索了下:jquery 自帶的 resize() 方法在IE下會執(zhí)行兩次。 下面的這些代碼是 W3CSCHOOL 上面的樣例源碼,測試之 resize() 方法是執(zhí)行的兩次。
- <head>
- <script type="text/javascript" src="js/jquery.js"></script>
- <script type="text/javascript">
- x=0;
- $(document).ready(function(){
- $(window).resize(function() {
- $("span").text(x+=1);
- });
- });
- </script>
- </head>
- <body>
- <p>窗口大小被調整過 <span>0</span> 次。</p>
- <p>請試著重新調整瀏覽器窗口的大小。</p>
- </body>
所以我在這里用了別人重寫的resize()方法的插件。 jquery.ba-resize.js 這里是插件的下載地址:點擊下載 用這個插件直接一樣的 $("selecter").resize(handler); 語法寫。 下面就是js代碼了。
- <script type="text/javascript">
- $(document).ready(function(){
- // 這里是窗口剛剛打開的時候,頁面中的圖片就要居中顯示。
- //網頁可見區(qū)域寬:
- var width = document.documentElement.clientWidth;
- //網頁可見區(qū)域高:
- var height = document.documentElement.clientHeight
- var n = height - 600;
- if (n > 0) {
- n = n / 2;
- n += "px";
- $("#_total").css("margin-top",n);
- }
- // 這里控制的是 margin-top 屬性
- // 其實 < 0 的時候不用考慮 圖片的高度,直接 margin-top = 0px 就可以了。我這里是改變了圖片顯示的高度。
- if (n < 0) {
- $("#_total").css("margin-top","0px");
- height += "px";
- $("#_total").css("height",height);
- }
- // 同樣的 判斷寬
- var aw = width - 960;
- if (aw > 0) {
- aw = aw/2;
- aw += "px";
- $("#_total").css("margin-left", aw);
- }
- if (aw < 0){
- $("#_total").css("margin-left", "0px");
- }
- // 這里就是 監(jiān)控 窗口放大縮小的事件了。
- $(window).resize(function(){
- // 一樣的 獲得當前的 高度和寬度
- // 重點說下這個 document.documentElement.clientWidth 如果在<html>標簽上面沒有寫 <!DOCTYPE html> 這句話。
- //document.documentElement.clientWidth 在IE下是獲取不到值得,鑒于規(guī)范,還是寫上這句 <!DOCTYPE html>
- var _width = document.documentElement.clientWidth;
- var _height = document.documentElement.clientHeight;
- var w = _width - 960;
- var h = _height - 600;
- if (w > 0) {
- w = w/2;
- w+= "px";
- $("#_total").css("margin-left", w);
- }
- if(w < 0) {
- $("#_total").css("margin-left", "0px");
- }
- if (h > 0) {
- h = h/2;
- h+="px";
- $("#_total").css("margin-top", h);
- }
- if (h < 0) {
- $("#_total").css("margin-top", "0px");
- }
- });
- });
- </script>
這是我想出的方法來解決這個問題。希望能夠看懂。
如果有更好的防解決 “窗口放大縮小后內容居中的問題”可以相互討論。
源碼我會上傳的。附件是源碼。
百度網盤下載地址
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。