2013-01-04 35 views
13

Đây là vấn đề ở mức cao: Tôi có trình phát video Flash cho video 16: 9. Tổng chiều cao của trình phát được thực hiện bởi chính video đó cùng với một số điều khiển. Chiều cao của các điều khiển là không đổi bất kể chiều cao của trình phát tổng thể. Vì vậy, những gì tôi muốn làm là có quy mô người chơi với CSS sao cho chiều cao thỏa mãn phương trình: y = rx + C, trong đó x là chiều rộng, r là tỷ lệ chiều cao của video với chiều rộng video và C là hằng số chiều cao của các điều khiển.Chia tỷ lệ phần tử đối tượng theo chiều rộng thành chiều rộng + không đổi với CSS

Tôi đã làm việc ra một cái gì đó mà làm việc trong Webkit, nhưng dường như không có gì khác:

#video-container { 
    height: 0px; 
    padding-bottom: 56%; /* proportional scaling */ 
    position:relative; 
    width: 100%; 
} 
#video-container object { 
    height: 100%; 
    padding-bottom: 50px; /* control height */ 
    position: absolute; 
    width: 100%; 
} 

Trong Webkit, bộ phim Flash sẽ mở rộng theo chiều dọc để lấp đầy diện tích đệm phía dưới. Tuy nhiên, trong mọi trình duyệt khác, phần đệm dưới cùng chỉ là không gian trống.

Có giải pháp chỉ CSS để mở rộng chiều cao của phần tử tỷ lệ thuận với chiều rộng cộng với một số giá trị không đổi? Có rất nhiều câu hỏi về SO liên quan đến tỷ lệ tỷ lệ thuận, nhưng phần không đổi là phần khó khăn.

+0

Tôi không nghĩ rằng có thể chỉ với CSS. Cung cấp cho chúng tôi thông tin cụ thể hơn về lý do bạn muốn thực hiện điều đó. Bạn đang cố gắng đạt được điều gì bằng cách làm điều đó? Và việc cung cấp HTML của bạn cũng sẽ hữu ích. –

+0

Nếu tôi không có trên điện thoại của mình, tôi sẽ cung cấp câu trả lời thực tế, nhưng bạn cần JS cho công việc hàng đầu này một cách trang nhã trong tất cả các trình duyệt. Bạn có thể truy cập trực tiếp các thuộc tính CSS theo cách đó và thao tác với những người khác với các điều kiện liên quan đến chúng. – casraf

Trả lời

19

Here is a fiddle that uses slightly different numbers, but is set up to illustrate ý tưởng "tỷ lệ thuận với chiều rộng cộng với một số giá trị không đổi" cho height. Nó dựa trên ý tưởng ban đầu của bạn, với một tinh chỉnh. Nó dường như thử nghiệm tốt trong IE8 +, Chrome, Firefox.

Về cơ bản, mã bạn sẽ cần phải có lẽ là đây:

#video-container { 
    position:relative; 
    width: 100%; 
    height: 0px; 
    padding-bottom: 56%; /* proportional scaling */ 
    padding-top: 50px; /* add constant */ 
} 

#video-container object { 
    position: absolute; 
    width: 100%; 
    height: 100%; 
    top: 0; 
} 
+0

Tôi đã nhận được một giải pháp làm việc, nhưng điều này đơn giản hơn nhiều, cảm ơn. Dường như rõ ràng bây giờ. – alexp

+0

+1, đã giúp tôi rất nhiều. – Utopik

Các vấn đề liên quan