Lấy kích thước của màn hình, trang web hiện tại và cửa sổ trình duyệt


2017

Làm thế nào tôi có thể nhận được windowWidth, windowHeight, pageWidth, pageHeight, screenWidth, screenHeight, pageX, pageY, screenX, screenYmà sẽ làm việc trong tất cả các trình duyệt chính?

ảnh chụp màn hình mô tả giá trị nào được muốn


9
pageHeight (trên một pic) bạn có thể nhận được với: document.body.scrollHeight
befzz


Điều này có thể có liên quan là tốt? developer.mozilla.org/en-US/docs/Web/API/Window.matchMedia
MEM


Câu trả lời:


1387

Bạn có thể lấy kích thước của cửa sổ hoặc tài liệu bằng jQuery:

// Size of browser viewport.
$(window).height();
$(window).width();

// Size of HTML document (same as pageHeight/pageWidth in screenshot).
$(document).height();
$(document).width();

Đối với kích thước màn hình, bạn có thể sử dụng screenđối tượng:

window.screen.height;
window.screen.width;

2
Phương thức jQuery height () dường như hoạt động cho tất cả các phần tử và trả về một số ( 46) chứ không phải là một chuỗi như css ('height') ( "46px").
Chris

6
Khi làm việc với Safari trên thiết bị di động, thật đáng buồn khi jQuery không phải là một giải pháp hoàn hảo cho câu hỏi này. Xem ghi chú trên dòng # 13 tại github.com/jquery/jquery/blob/master/src/dimensions.js
Joshua

8
@ 웃 웃웃 bạn đã chỉnh sửa gì trong câu trả lời? theo các sửa đổi, bạn hoàn toàn không chỉnh sửa gì cả
Daniel W.

14
@Marco Kerwitz Điều tồi tệ nhất là tôi đã gõ "javascript get width width" và nội dung của câu trả lời này là trên Google. Một điểm trừ lớn từ tôi.
Maciej Krawchot

2
OP DID ASK rằng jquery là một lựa chọn. Bất cứ ai ninja chỉnh sửa câu hỏi ban đầu để loại trừ nó đều có lỗi ở đây, không phải mọi người đưa ra câu trả lời hợp pháp bằng thư viện javascript được thế giới chấp nhận.
IncredibleHat

963

Điều này có mọi thứ bạn cần biết: Nhận kích thước khung nhìn / cửa sổ

nhưng tóm lại:

var win = window,
    doc = document,
    docElem = doc.documentElement,
    body = doc.getElementsByTagName('body')[0],
    x = win.innerWidth || docElem.clientWidth || body.clientWidth,
    y = win.innerHeight|| docElem.clientHeight|| body.clientHeight;
alert(x + ' × ' + y);

Vĩ cầm

Hãy dừng chỉnh sửa câu trả lời này. Bây giờ nó đã được chỉnh sửa 22 lần bởi những người khác nhau để phù hợp với sở thích định dạng mã của họ. Điều này cũng được chỉ ra rằng điều này là không bắt buộc nếu bạn chỉ muốn nhắm mục tiêu các trình duyệt hiện đại - nếu vậy bạn chỉ cần những điều sau đây:

const width  = window.innerWidth || document.documentElement.clientWidth || 
document.body.clientWidth;
const height = window.innerHeight|| document.documentElement.clientHeight|| 
document.body.clientHeight;

console.log(width, height);

58
Tại sao không g = document.body?
một mọt sách được trả tiền

51
@apaidnerd: Các trình duyệt thách thức tiêu chuẩn như IE8 không hỗ trợ document.body. IE9, tuy nhiên, không.
Michael Mikowski

46
@MichaelMikowski Điều đó không đúng! Ngay cả IE5 cũng hỗ trợ document.body.
Nux

32
@nux Tôi đã sửa chữa và tôi đã xác nhận hỗ trợ trong IE8. Mặc dù vậy, tôi biết rằng ít nhất một trình duyệt mà chúng tôi nhắm mục tiêu gần đây không hỗ trợ tài liệu. Mọi người và chúng tôi phải thay đổi để sử dụng phương pháp getElementsByTagName. Nhưng tôi đoán tôi đã đánh giá sai trình duyệt. Lấy làm tiếc!
Michael Mikowski

32
Tôi chỉ muốn nhận xét rất kỳ quặc rằng tên biến một chữ cái không bao giờ hữu ích.
wybe

480

Đây là một giải pháp trình duyệt chéo với JavaScript thuần ( Nguồn ):

var width = window.innerWidth
|| document.documentElement.clientWidth
|| document.body.clientWidth;

var height = window.innerHeight
|| document.documentElement.clientHeight
|| document.body.clientHeight;

9
Điều này tốt hơn bởi vì nếu bạn có thể gọi tập lệnh đủ sớm trong quá trình tải (thường là ý tưởng), thì body elementsẽ trả về một giá trị undefinedvì dom chưa được tải.
dgo

16
HẠ! Chủ đề cũ nhưng cảm ơn vì điều đó! Tôi đoán tôi là một trong những "kẻ ngốc" cũ cố gắng hỗ trợ ít nhất là quay lại IE8 khi có thể, vì lợi ích của số lượng người dùng gia đình lớn tuổi sẽ không bao giờ ngừng sử dụng XP cho đến khi máy của họ bốc cháy. Tôi cảm thấy mệt mỏi khi đặt câu hỏi và thay vì nhận được câu trả lời, việc bỏ phiếu chỉ với "DỪNG HPORT TRỢ IE8 !!" như một bình luận. Một lần nữa cám ơn! Điều này đã giải quyết một vấn đề cho tôi trong việc phóng to ảnh javascript thuần túy mà tôi đã thực hiện. Nó hơi chậm trên IE8, nhưng bây giờ ít nhất nó hoạt động !!! :-)
Randy

1
tuyệt vời nó là tốt hơn nhiều so với nghỉ ngơi.
vinayak shahdeo

95

Một cách không phải jQuery để có được kích thước màn hình có sẵn. window.screen.width/heightđã được đưa lên, nhưng vì webdesign đáp ứng và hoàn thiện vì tôi nghĩ rằng đáng để đề cập đến các thuộc tính đó:

alert(window.screen.availWidth);
alert(window.screen.availHeight);

http://www.quirksmode.org/dom/w3c_cssom.html#t10 :

availWidthavailHeight - Chiều rộng và chiều cao có sẵn trên màn hình (không bao gồm các thanh tác vụ của hệ điều hành, v.v.).


giống như chiều rộng screen.height - trên trình duyệt chrome của Android hiển thị chia cho tỷ lệ pixel :(
Darius.V

2
window.screen.availHeightdường như giả định chế độ toàn màn hình để chế độ màn hình bình thường buộc phải cuộn (được thử nghiệm trong Firefox và Chrome).
Suzana

@Suzana_K sau đó sử dụng window.screen.heightthay thế.
vallentin

66

Nhưng khi chúng ta nói về màn hình đáp ứng và nếu chúng ta muốn xử lý nó bằng jQuery vì một số lý do,

window.innerWidth, window.innerHeight

đưa ra phép đo chính xác. Thậm chí, nó còn loại bỏ không gian thừa của thanh cuộn và chúng ta không cần phải lo lắng về việc điều chỉnh không gian đó :)


2
Đây phải là câu trả lời được chấp nhận với vô số upvote. Một câu trả lời hữu ích hơn nhiều so với câu trả lời hiện được chấp nhận và nó cũng không phụ thuộc vào jQuery.
nhà phát triển xe máy

5
Thật không may, window.innerWidthwindow.innerHeightkhông thể đưa kích thước của thanh cuộn vào tài khoản. Nếu có thanh cuộn, các phương thức này trả về kết quả sai cho kích thước cửa sổ trong gần như tất cả các trình duyệt máy tính để bàn. Xem stackoverflow.com/a/31655549/508355
hashchange

20

Bạn cũng có thể lấy chiều rộng và chiều cao của WINDOW, tránh các thanh công cụ của trình duyệt và các thứ khác. Đây là khu vực có thể sử dụng thực sự trong cửa sổ trình duyệt .

Để thực hiện việc này, hãy sử dụng: window.innerWidthwindow.innerHeightcác thuộc tính ( xem tài liệu tại w3schools ).

Trong hầu hết các trường hợp, đó sẽ là cách tốt nhất, ví dụ, để hiển thị một hộp thoại phương thức nổi tập trung hoàn hảo. Nó cho phép bạn tính toán các vị trí trên cửa sổ, bất kể định hướng độ phân giải hoặc kích thước cửa sổ đang sử dụng trình duyệt.


2
Điều này không được hỗ trợ trong eg8 hay eg7, theo w3schools. Ngoài ra, bạn phải coi chừng khi bạn liên kết đến w3schools. Xem meta.stackexchange.com/questions/87678/ từ
thecarpy

20
function wndsize(){
  var w = 0;var h = 0;
  //IE
  if(!window.innerWidth){
    if(!(document.documentElement.clientWidth == 0)){
      //strict mode
      w = document.documentElement.clientWidth;h = document.documentElement.clientHeight;
    } else{
      //quirks mode
      w = document.body.clientWidth;h = document.body.clientHeight;
    }
  } else {
    //w3c
    w = window.innerWidth;h = window.innerHeight;
  }
  return {width:w,height:h};
}
function wndcent(){
  var hWnd = (arguments[0] != null) ? arguments[0] : {width:0,height:0};
  var _x = 0;var _y = 0;var offsetX = 0;var offsetY = 0;
  //IE
  if(!window.pageYOffset){
    //strict mode
    if(!(document.documentElement.scrollTop == 0)){offsetY = document.documentElement.scrollTop;offsetX = document.documentElement.scrollLeft;}
    //quirks mode
    else{offsetY = document.body.scrollTop;offsetX = document.body.scrollLeft;}}
    //w3c
    else{offsetX = window.pageXOffset;offsetY = window.pageYOffset;}_x = ((wndsize().width-hWnd.width)/2)+offsetX;_y = ((wndsize().height-hWnd.height)/2)+offsetY;
    return{x:_x,y:_y};
}
var center = wndcent({width:350,height:350});
document.write(center.x+';<br>');
document.write(center.y+';<br>');
document.write('<DIV align="center" id="rich_ad" style="Z-INDEX: 10; left:'+center.x+'px;WIDTH: 350px; POSITION: absolute; TOP: '+center.y+'px; HEIGHT: 350px"><!--К сожалению, у Вас не установлен flash плеер.--></div>');

20

Để kiểm tra chiều cao và chiều rộng của trang được tải hiện tại của bạn trên bất kỳ trang web nào bằng cách sử dụng "bảng điều khiển" hoặc sau khi nhấp vào "Kiểm tra" .

bước 1 : Nhấp vào nút chuột phải và nhấp vào 'Kiểm tra' và sau đó nhấp vào 'bảng điều khiển'

bước 2 : Đảm bảo rằng màn hình trình duyệt của bạn không ở chế độ 'tối đa hóa'. Nếu màn hình trình duyệt ở chế độ 'tối đa hóa', trước tiên bạn cần nhấp vào nút tối đa hóa (hiện ở góc trên bên phải hoặc bên trái) và hủy tối đa hóa nó.

Bước 3 : Bây giờ, hãy viết như sau sau dấu lớn hơn ('>') tức là

       > window.innerWidth
            output : your present window width in px (say 749)

       > window.innerHeight
            output : your present window height in px (say 359)

1
Tại sao đây không phải là câu trả lời được chọn?
Iulian Onofrei

1
@IulianOnofrei vì nó không trả lời đầy đủ các câu hỏi ban đầu. Nói đùa, đó là câu trả lời chính xác cho tôi.
cướp

InternalWidth và InternalHeight chỉ chính xác nếu thang đo khung nhìn là 1. Đây là mặc định, nhưng nó có thể vô tình thay đổi bằng cách sử dụng các biến đổi css.
Victor Stoddard

"window.innerWidth" trái ngược với "screen. thong" hoạt động với tôi để xác định kích thước trình duyệt của người dùng - cảm ơn bạn!
Kevin Pajak

10

Nếu bạn cần một giải pháp chống đạn thực sự cho chiều rộng và chiều cao của tài liệu ( pageWidthpageHeighttrong ảnh), bạn có thể muốn xem xét sử dụng một plugin của tôi, jQuery.documentSize .

Nó chỉ có một mục đích: luôn trả về kích thước tài liệu chính xác, ngay cả trong các tình huống khi jQuery và các phương thức khác không thành công . Mặc dù tên của nó, bạn không nhất thiết phải sử dụng jQuery - nó được viết bằng vanilla Javascript và cũng hoạt động mà không cần jQuery .

Sử dụng:

var w = $.documentWidth(),
    h = $.documentHeight();

cho toàn cầu document. Đối với các tài liệu khác, ví dụ: trong iframe nhúng mà bạn có quyền truy cập, hãy chuyển tài liệu dưới dạng tham số:

var w = $.documentWidth( myIframe.contentDocument ),
    h = $.documentHeight( myIframe.contentDocument );

Cập nhật: bây giờ cho kích thước cửa sổ, quá

Kể từ phiên bản 1.1.0, jQuery.documentSize cũng xử lý các kích thước cửa sổ.

Điều đó là cần thiết bởi vì

jQuery.documentSize cung cấp $.windowWidth()$.windowHeight(), giải quyết những vấn đề này. Để biết thêm, xin vui lòng kiểm tra các tài liệu .


VM2859: 1 Uncaught DOMException: Bị chặn một khung có nguồn gốc " localhost: 12999 " khi truy cập vào một khung có nguồn gốc chéo. (Có thể có cách nào để vượt qua điều này ???
fizmhd

1
Bạn không thể truy cập iframe từ một tên miền khác, nó vi phạm chính sách cùng nguồn gốc . Kiểm tra câu trả lời này .
hashchange

Điều này không hoạt động nếu bạn đang nhúng iframe và cố gắng lấy chiều cao của cổng xem. window.innerHeight bằng chiều cao tài liệu bị lỗi. Bạn không thể truy cập khung. từ một miền khác, nó không phải là một giải pháp khả thi.
M.Abulsoud

@ M.Abulsoud Với điều kiện bạn có quyền truy cập vào iframe (không vi phạm CORS), nó hoạt động và được bảo vệ bởi bộ thử nghiệm. Sử dụng cú pháp này . Nó thậm chí hoạt động với nhiều iframe lồng vào nhau - xem ví dụ này trên Codepen . Nếu thiết lập của bạn hoạt động chung, nhưng không thành công trong một trình duyệt cụ thể, đó có thể là một lỗi tôi không biết. Có lẽ bạn có thể mở một vấn đề trong trường hợp đó? Cảm ơn.
hashchange

8

Tôi đã viết một bookmarklet javascript nhỏ mà bạn có thể sử dụng để hiển thị kích thước. Bạn có thể dễ dàng thêm nó vào trình duyệt của mình và bất cứ khi nào bạn nhấp vào nó, bạn sẽ thấy kích thước ở góc bên phải của cửa sổ trình duyệt của bạn.

Tại đây bạn tìm thấy thông tin về cách sử dụng bookmarklet https://en.wikipedia.org/wiki/Bookmarklet

Bookmarklet

javascript:(function(){!function(){var i,n,e;return n=function(){var n,e,t;return t="background-color:azure; padding:1rem; position:fixed; right: 0; z-index:9999; font-size: 1.2rem;",n=i('<div style="'+t+'"></div>'),e=function(){return'<p style="margin:0;">width: '+i(window).width()+" height: "+i(window).height()+"</p>"},n.html(e()),i("body").prepend(n),i(window).resize(function(){n.html(e())})},(i=window.jQuery)?(i=window.jQuery,n()):(e=document.createElement("script"),e.src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js",e.onload=n,document.body.appendChild(e))}()}).call(this);

Mã gốc

Mã ban đầu là trong cà phê:

(->
  addWindowSize = ()->
    style = 'background-color:azure; padding:1rem; position:fixed; right: 0; z-index:9999; font-size: 1.2rem;'
    $windowSize = $('<div style="' + style + '"></div>')

    getWindowSize = ->
      '<p style="margin:0;">width: ' + $(window).width() + ' height: ' + $(window).height() + '</p>'

    $windowSize.html getWindowSize()
    $('body').prepend $windowSize
    $(window).resize ->
      $windowSize.html getWindowSize()
      return

  if !($ = window.jQuery)
    # typeof jQuery=='undefined' works too
    script = document.createElement('script')
    script.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js'
    script.onload = addWindowSize
    document.body.appendChild script
  else
    $ = window.jQuery
    addWindowSize()
)()

Về cơ bản mã đang chuẩn bị một div nhỏ cập nhật khi bạn thay đổi kích thước cửa sổ của mình.


5

Trong một số trường hợp liên quan đến bố cục đáp ứng $(document).height()có thể trả về dữ liệu sai chỉ hiển thị chiều cao cổng xem. Ví dụ: khi một số trình bao bọc div # có chiều cao: 100%, #wrapper đó có thể được kéo dài bởi một số khối bên trong nó. Nhưng chiều cao của nó vẫn sẽ giống như chiều cao khung nhìn. Trong tình huống như vậy bạn có thể sử dụng

$('#wrapper').get(0).scrollHeight

Điều đó thể hiện kích thước thực tế của bọc.


Rất nhiều câu trả lời với hàng trăm lượt upvote nhưng chỉ có điều này là hữu ích.
Nakilon

5

Hướng dẫn đầy đủ liên quan đến kích thước màn hình

JavaScript

Đối với chiều cao:

document.body.clientHeight  // Inner height of the HTML document body, including padding 
                            // but not the horizontal scrollbar height, border, or margin

screen.height               // Device screen height (i.e. all physically visible stuff)
screen.availHeight          // Device screen height minus the operating system taskbar (if present)
window.innerHeight          // The current document's viewport height, minus taskbars, etc.
window.outerHeight          // Height the current window visibly takes up on screen 
                            // (including taskbars, menus, etc.)

Lưu ý: Khi cửa sổ được tối đa hóa, điều này sẽ bằng screen.availHeight

Đối với chiều rộng:

document.body.clientWidth   // Full width of the HTML page as coded, minus the vertical scroll bar
screen.width                // Device screen width (i.e. all physically visible stuff)
screen.availWidth           // Device screen width, minus the operating system taskbar (if present)
window.innerWidth           // The browser viewport width (including vertical scroll bar, includes padding but not border or margin)
window.outerWidth           // The outer window width (including vertical scroll bar,
                            // toolbars, etc., includes padding and border but not margin)

Jquery

Đối với chiều cao:

$(document).height()    // Full height of the HTML page, including content you have to 
                        // scroll to see

$(window).height()      // The current document's viewport height, minus taskbars, etc.
$(window).innerHeight() // The current document's viewport height, minus taskbars, etc.
$(window).outerHeight() // The current document's viewport height, minus taskbars, etc.                         

Đối với chiều rộng:

$(document).width()     // The browser viewport width, minus the vertical scroll bar
$(window).width()       // The browser viewport width (minus the vertical scroll bar)
$(window).innerWidth()  // The browser viewport width (minus the vertical scroll bar)
$(window).outerWidth()  // The browser viewport width (minus the vertical scroll bar)

Tham khảo: https://help.optimizely.com/Build_Campaigns_and_Experiment/Use_screen_measurements_to_design_for_responsive_breakpoint


4

Tôi đã phát triển một thư viện để biết kích thước khung nhìn thực cho máy tính để bàn và trình duyệt điện thoại di động, bởi vì kích thước khung nhìn không nhất quán trên các thiết bị và không thể dựa vào tất cả các câu trả lời của bài đăng đó (theo tất cả các nghiên cứu tôi đã thực hiện về điều này): https: // github .com / pyrsmk / W


3

Đôi khi bạn cần xem sự thay đổi chiều rộng / chiều cao trong khi thay đổi kích thước cửa sổ và nội dung bên trong.

Vì vậy, tôi đã viết một đoạn script nhỏ có thêm hộp nhật ký theo dõi động tất cả các cập nhật thay đổi kích thước và gần như ngay lập tức.

Nó thêm một HTML hợp lệ với vị trí cố định và chỉ số z cao, nhưng đủ nhỏ, vì vậy bạn có thể :

  • sử dụng nó trên một trang web thực tế
  • sử dụng nó để kiểm tra quan điểm di động / đáp ứng


Đã thử nghiệm trên: Chrome 40, IE11, nhưng rất có thể hoạt động trên các trình duyệt khác / cũ hơn ... :)

  function gebID(id){ return document.getElementById(id); }
  function gebTN(tagName, parentEl){ 
     if( typeof parentEl == "undefined" ) var parentEl = document;
     return parentEl.getElementsByTagName(tagName);
  }
  function setStyleToTags(parentEl, tagName, styleString){
    var tags = gebTN(tagName, parentEl);
    for( var i = 0; i<tags.length; i++ ) tags[i].setAttribute('style', styleString);
  }
  function testSizes(){
    gebID( 'screen.Width' ).innerHTML = screen.width;
    gebID( 'screen.Height' ).innerHTML = screen.height;

    gebID( 'window.Width' ).innerHTML = window.innerWidth;
    gebID( 'window.Height' ).innerHTML = window.innerHeight;

    gebID( 'documentElement.Width' ).innerHTML = document.documentElement.clientWidth;
    gebID( 'documentElement.Height' ).innerHTML = document.documentElement.clientHeight;

    gebID( 'body.Width' ).innerHTML = gebTN("body")[0].clientWidth;
    gebID( 'body.Height' ).innerHTML = gebTN("body")[0].clientHeight;  
  }

  var table = document.createElement('table');
  table.innerHTML = 
       "<tr><th>SOURCE</th><th>WIDTH</th><th>x</th><th>HEIGHT</th></tr>"
      +"<tr><td>screen</td><td id='screen.Width' /><td>x</td><td id='screen.Height' /></tr>"
      +"<tr><td>window</td><td id='window.Width' /><td>x</td><td id='window.Height' /></tr>"
      +"<tr><td>document<br>.documentElement</td><td id='documentElement.Width' /><td>x</td><td id='documentElement.Height' /></tr>"
      +"<tr><td>document.body</td><td id='body.Width' /><td>x</td><td id='body.Height' /></tr>"
  ;

  gebTN("body")[0].appendChild( table );

  table.setAttribute(
     'style',
     "border: 2px solid black !important; position: fixed !important;"
     +"left: 50% !important; top: 0px !important; padding:10px !important;"
     +"width: 150px !important; font-size:18px; !important"
     +"white-space: pre !important; font-family: monospace !important;"
     +"z-index: 9999 !important;background: white !important;"
  );
  setStyleToTags(table, "td", "color: black !important; border: none !important; padding: 5px !important; text-align:center !important;");
  setStyleToTags(table, "th", "color: black !important; border: none !important; padding: 5px !important; text-align:center !important;");

  table.style.setProperty( 'margin-left', '-'+( table.clientWidth / 2 )+'px' );

  setInterval( testSizes, 200 );

EDIT: Bây giờ các kiểu chỉ được áp dụng cho phần tử bảng logger - không phải cho tất cả các bảng - đây cũng là một giải pháp không có jQuery :)


3

Với việc giới thiệu globalThistrong ES2020, bạn có thể sử dụng các thuộc tính như thế nào.

Đối với kích thước màn hình:

globalThis.screen.availWidth 
globalThis.screen.availHeight

Đối với kích thước cửa sổ

globalThis.outerWidth
globalThis.outerHeight

Đối với Offset:

globalThis.pageXOffset
globalThis.pageYOffset

...& Sớm.

alert("Screen Width: "+ globalThis.screen.availWidth +"\nScreen Height: "+ globalThis.screen.availHeight)


2

Bạn có thể sử dụng màn hình đối tượng để có được điều này.

Sau đây là một ví dụ về những gì nó sẽ trả lại:

Screen {
    availWidth: 1920,
    availHeight: 1040,
    width: 1920,
    height: 1080,
    colorDepth: 24,
    pixelDepth: 24,
    top: 414,
    left: 1920,
    availTop: 414,
    availLeft: 1920
}

Để có được screenWidthbiến của bạn , chỉ cần sử dụng screen.width, cùng với screenHeight, bạn sẽ chỉ sử dụng screen.height.

Để có được chiều rộng và chiều cao cửa sổ của bạn, nó sẽ screen.availWidthhoặc screen.availHeighttương ứng.

Đối với các biến pageXpageYsử dụng window.screenX or Y. Lưu ý rằng đây là từ RẤT NHIỀU / HÀNG ĐẦU CỦA MÀN HÌNH / MÀN HÌNH HÀNG ĐẦU CỦA BẠN . Vì vậy, nếu bạn có hai màn hình chiều rộng 1920thì một cửa sổ 500px từ bên trái màn hình bên phải sẽ có giá trị X là 2420(1920 + 500). screen.width/heighttuy nhiên, hiển thị chiều rộng hoặc chiều cao của màn hình HIỆN TẠI.

Để có được chiều rộng và chiều cao của trang của bạn, hãy sử dụng jQuery $(window).height()hoặc $(window).width().

Một lần nữa sử dụng jQuery, sử dụng $("html").offset().top$("html").offset().leftcho pageXpageYgiá trị của bạn .


screenX / Y liên quan đến màn hình chính, không liên quan đến màn hình bên trái / trên cùng. Đó là lý do tại sao giá trị âm nếu bạn hiện đang ở trên màn hình bên trái màn hình chính.
Tom

0

đây là giải pháp của tôi

// innerWidth
const screen_viewport_inner = () => {
    let w = window,
        i = `inner`;
    if (!(`innerWidth` in window)) {
        i = `client`;
        w = document.documentElement || document.body;
    }
    return {
        width: w[`${i}Width`],
        height: w[`${i}Height`]
    }
};


// outerWidth
const screen_viewport_outer = () => {
    let w = window,
        o = `outer`;
    if (!(`outerWidth` in window)) {
        o = `client`;
        w = document.documentElement || document.body;
    }
    return {
        width: w[`${o}Width`],
        height: w[`${o}Height`]
    }
};

// style
const console_color = `
    color: rgba(0,255,0,0.7);
    font-size: 1.5rem;
    border: 1px solid red;
`;



// testing
const test = () => {
    let i_obj = screen_viewport_inner();
    console.log(`%c screen_viewport_inner = \n`, console_color, JSON.stringify(i_obj, null, 4));
    let o_obj = screen_viewport_outer();
    console.log(`%c screen_viewport_outer = \n`, console_color, JSON.stringify(o_obj, null, 4));
};

// IIFE
(() => {
    test();
})();



0

Đây là cách tôi quản lý để có được chiều rộng màn hình trong Dự án React JS:

Nếu chiều rộng bằng 1680 thì trả về 570 khác trả về 200

var screenWidth = window.screen.availWidth;

<Label style={{ width: screenWidth == "1680" ? 570 : 200, color: "transparent" }}>a  </Label>

Screen.availWidth

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.