2013-08-18 38 views
18

tôi có mã HTML này:Nhận giá trị của thuộc tính trong CSS

<div data-width="70"></div> 

Tôi muốn thiết lập chiều rộng của nó trong CSS tương đương với giá trị của thuộc tính dữ liệu chiều rộng, ví dụ một cái gì đó như thế này:

div { 
    width: [data-width]; 
} 

Tôi thấy điều này đã được thực hiện ở đâu đó, nhưng tôi không thể nhớ nó. Cảm ơn.

+0

Bạn có thể sử dụng 'var width = 70px;' sau đó trong mã, bạn có thể viết nó dưới dạng 'width: @width // asp.net web pages variable'. Nó sẽ là tốt hơn để sử dụng Style trong đầu của trang không phải trong một tập tin riêng biệt. –

+5

Điều này đã được đề xuất là CSS3 'attr()' nhưng không được triển khai. Nó không thể đạt được với CSS2 'attr()'. – BoltClock

Trả lời

31

Đây là những gì tôi đang tìm kiếm:

https://developer.mozilla.org/en-US/docs/Web/CSS/attr

Vấn đề là nó không được hỗ trợ ngay cả bởi một số trình duyệt chính, trong trường hợp này là Chrome.

+1

Đây là thử nghiệm. –

+0

Nhưng đây là câu trả lời đúng. @amar bạn có thể đánh dấu nó là đúng, như bạn là người hỏi. – elboletaire

+5

vì vậy câu trả lời là '' 'width: attr (chiều rộng dữ liệu);' '';) – svassr

2

CSS là thông tin kiểu dáng tĩnh về phần tử html cụ thể và không phải là cách khác. Nếu bạn muốn sử dụng CSS để thiết lập chiều rộng của div của bạn tôi đề nghị bạn làm với việc sử dụng các lớp:

HTML:

<div class="foo"></div> 

CSS:

.foo { 
    width: 70px; 
} 

jsFiddle

8

Bạn không thể chuyển giá trị thuộc tính dữ liệu trực tiếp vào css mà không có nội dung kiểu giả. Thay vào đó bạn có thể làm theo cách này .. CHECK THIS FIDDLE

<div data-width="a"></div><br> 
<div data-width="b"></div><br> 
<div data-width="c"></div> 

CSS

div[data-width="a"] { 
    background-color: gray; 
    height: 10px; 
    width:70px; 
} 
div[data-width="b"] { 
    background-color: gray; 
    height: 10px; 
    width:80px; 
} 
div[data-width="c"] { 
    background-color: gray; 
    height: 10px; 
    width:90px; 
} 
+2

Tôi có thể vượt qua nó, tôi đã thấy nó trước đây. –

1

Tôi chỉ có vui vẻ với điều này, nhưng một giải pháp jQuery sẽ là một cái gì đó như thế này:

HTML

<div class='foo' data-width='70'></div> 
<div class='foo' data-width='110'></div> 
<div class='foo' data-width='300'></div> 
<div class='foo' data-width='200'></div> 

CSS

.foo { 
    background: red; 
    height: 20px; 
    margin-bottom: 10px; 
    width: 0; /** defaults to zero **/ 
} 

jQuery

$(document).ready(function(){ 
    $('.foo').each(function(i) { 
    var width = $(this).data('width'); 
    $(this).width(width); 
    }); 
}); 

Codepen phác họa ở đây: http://cdpn.io/otdqB


LOẠI AN CẬP NHẬT Không phải những gì bạn đang tìm kiếm, vì bạn muốn chuyển một biến cho thuộc tính chiều rộng. Bạn cũng có thể sử dụng một lớp trong trường hợp này.

HTML

<div data-width='70'>Blue</div> 

CSS

div[data-width='70'] { 
    width: 70px; 
} 

Phác thảo ở đây: http://cdpn.io/jKDcH

+0

Tôi đã làm điều này trong jQuery, đó là lý do tại sao tôi yêu cầu một cách để làm điều đó trong css. –

+0

@AmarSyla Không có cách nào để làm điều đó trong CSS –

+0

Tôi thề nó có thể được thực hiện bro, có thể với một plugin hoặc một cái gì đó, nhưng tôi thấy rằng giá trị của thuộc tính html được chuyển đến phong cách css. –

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