Tôi biết đây là một câu hỏi cũ, nhưng khi mọi người di chuyển về phía đơn vị vh
, câu hỏi này sẽ trở nên phổ biến hơn.
Để làm rõ, đây là ví dụ về sự cố. Chúng tôi có một tập tin HTML mà tải một iframe
:
<!DOCTYPE html>
<html>
<head></head>
<style>
iframe {
height: 50vh;
width: 100%;
}
</style>
<body>
<iframe src="iframe.html"/>
</body>
</html>
Và iframe
của nó:
<!DOCTYPE html>
<html>
<head></head>
<style>
div {
height: 50vh;
width: 100%;
background: blue;
}
</style>
<body>
<div></div>
</body>
</html>
Điều quan trọng cần lưu ý ở đây là cả hai iframe
và các yếu tố iframe's
div
được chỉ định là có một chiều cao của 50vh
. Hành vi dự định có thể là iframe
tôn trọng chiều cao hoặc chiều rộng của chế độ xem của bối cảnh gốc. Thay vào đó, kết quả sẽ như thế này:
Đó là, chiều cao của các yếu tố màu xanh là ~ 25% của cửa sổ trình duyệt, thay vì dự kiến 50% (100% iframe
). Mặc dù chúng tôi có thể muốn iframe
tôn trọng chế độ xem của cha mẹ, ví dụ này tạo ra một trường hợp tốt cho cách không trực quan, mặc dù nó chắc chắn sẽ làm cho đơn vị v*
có giá trị hơn đối với nội dung là iframe
. với chiều cao khung nhìn được xác định như thế nào.
Từ the spec:
Chiều dài viewport-tỷ lệ có liên quan đến kích thước của đầu chứa khối. Khi chiều cao hoặc chiều rộng của khối chứa ban đầu được thay đổi, chúng được thu nhỏ cho phù hợp.
Cả hai iframe
và cửa sổ trình duyệt có thể là initial containing block, vì cả hai chế độ xem hợp lệ. Chế độ xem không giới hạn ở cửa sổ trình duyệt, nhưng thay vào đó được xác định là cửa sổ hoặc khu vực xem khác trên màn hình mà qua đó người dùng tham khảo tài liệu.
An iframe
tạo nested browsing context khi được chèn vào tài liệu và do đó có chế độ xem riêng.
Vì vậy, có, đây là hành vi dự định - và tiếc là không có cách giải quyết CSS thuần túy - tuy nhiên, www139 đã cung cấp ví dụ về cách thực hiện điều này bằng JavaScript. Vấn đề với điều này bắt đầu khi kích thước của nhiều yếu tố được kiểm soát bằng cách sử dụng đơn vị v*
.
sử dụng javascript cho việc này. Kiểm tra 'window.innerWidth' và' window.innerHeight'. – www139
Khung nội tuyến trên cùng một tên miền? – www139
Bạn có thể tạo một jsfiddle cho chúng tôi không? – www139