Tôi đang sử dụng phương pháp Keith Clark's CSS-only để tạo hiệu ứng thị sai hai lớp sao cho hình nền cuộn với tốc độ chậm hơn so với phần còn lại của nội dung của trang web. Chỉ cần được rõ ràng, hình ảnh bao gồm toàn bộ trang và nội dung nằm trên đầu trang của nó.Hình nền CSS Parallax Không gian trắng trong IE
Trang web của tôi được chia thành hai phần chính div
(và một vùng chứa div
) - một cho hình nền và hình kia cho nội dung của trang. Dưới đây là mã tôi đang sử dụng cho các yếu tố khác nhau div
.
.container {
height: 100%;
overflow-x: hidden;
overflow-y: auto;
perspective: 1px;
position: absolute;
left: 0;
right: 0;
}
.background {
background-image: url(images/background.jpg);
background-size: cover;
position: absolute;
/* margin-bottom: -200em;
overflow: hidden; */
height: 200em;
left: 0;
right: 0;
transform: translateZ(-2px) scale(3);
}
.page-content {
transform: translateZ(0);
}
Nếu không có sự margin-bottom
và overflow
thuộc tính gia tăng, các yếu tố nền div
sẽ kết thúc có khoảng trắng dọc còn sót lại một khi nó đã được thiết lập lên một tầm cao đủ cao để trang trải tất cả các nội dung của trang.
Sau khi thêm biên độ tiêu cực, vấn đề đã được cố định trong Chrome và loại trong Firefox *, và tôi tăng chiều cao và lợi nhuận tiêu cực của các yếu tố div
được nhiều hơn được yêu cầu để đảm bảo nó sẽ làm việc cho trang khác độ dài.
IE 11 vẫn có không gian màu trắng ở đó. Thông thường, thuộc tính background-size: cover;
loại bỏ bất kỳ khoảng trắng nào, nhưng điều này không hoạt động với hiệu ứng thị sai.
Bạn có biết cách nào để xóa không gian trắng sẽ hoạt động cho IE9 + và các trình duyệt chính khác không, hoặc tôi có may mắn không?
Dưới đây là một JSFiddle có mã chính xác giống với trang web tôi đang tạo.
* Firefox không có khoảng trắng, nhưng lề âm không hoạt động đúng cho tất cả độ dài trang. Đối với các trang ngắn hơn, bạn có thể cuộn theo cách đã vượt qua phần cuối của nội dung của trang. Tôi có thể khắc phục điều này bằng cách thay đổi chiều cao và lề cho mỗi trang, nhưng một giải pháp toàn cầu sẽ được đánh giá cao nếu có thể.
lý do bạn sử dụng 'height: 100%' thay vì 'height: 100vh' như bài viết được đề cập? –
@LeandroRuel, vì tỷ lệ phần trăm được hỗ trợ tốt hơn và chúng dường như có cùng tác dụng, tôi quyết định sử dụng chúng thay vì đơn vị vh. Tôi vừa thử nghiệm thay đổi các đơn vị thành vh ngay bây giờ, nhưng nó không khắc phục được sự cố trong IE 11. –
nhưng nếu bạn đặt với tỷ lệ phần trăm, bạn cần đặt 'html, body' là' height: 100% ' , với yếu tố đạt được 100% chiều cao của mình. hoặc bạn có thể bọc các phần tử với một phần tử cha bằng cách sử dụng một chiều cao cố định –