Làm cách nào để phát hiện xem div có nhiều hơn một dòng không? Ý tôi là như thế này:Phát hiện xem div có nhiều hơn một dòng
div :multiline {
...
}
Tôi muốn để định dạng nội dung liên quan đến số lượng dòng (1 hoặc nhiều)
Làm cách nào để phát hiện xem div có nhiều hơn một dòng không? Ý tôi là như thế này:Phát hiện xem div có nhiều hơn một dòng
div :multiline {
...
}
Tôi muốn để định dạng nội dung liên quan đến số lượng dòng (1 hoặc nhiều)
Nếu bạn sẵn sàng để sử dụng Javascript/JQuery, bạn có thể kiểm tra chiều cao của div và xem nếu nó lớn hơn nó sẽ chỉ với một dòng văn bản. Tất nhiên, điều này không phải là rất lỗi, nhưng tôi sẽ không biết cách nào khác.
Không phải chỉ có thể quản lý điều này bởi css? –
@ KissKoppány Không phải là tôi đã thấy. – Daedalus
Tôi cũng không nghĩ vậy. Tìm kiếm nhiều hơn một chút và không tìm thấy gì JS-ít hơn. –
Tôi không chắc liệu bạn có thể quản lý điều này bằng CSS hay không nhưng bạn có thể thực hiện điều này với JQuery. Tôi phải thừa nhận rằng JQuery của tôi không phải là tuyệt vời và tôi đang trong quá trình học nó, vì vậy hãy mang nó với một chút muối. Bạn có thể sử dụng chiều cao của thuộc tính để tìm chiều cao của div và thêm các kiểu cần thiết dựa trên chiều cao của div.
$("div").ready(
function test(event) {
var heightOfDiv = $(document).height();
if (heightOfDiv > 15){
$("div").css({
backgroundColor: "green"
});}
}
);
Tôi sẽ không gọi đây là giải pháp nhiều nhất có thể dẫn đến giải pháp. Tôi nghĩ câu hỏi của bạn rất thú vị; vì vậy tôi quyết định chơi với CSS một chút.
Nó sử dụng rộng hiện tại của nội span
(được thông qua inline-block
hiển thị) để xác định chiều rộng thụt lề. Chúng tôi sử dụng calc()
để làm cho thụt lề 100%
trừ chiều rộng gốc của 200px
có thụt lề cuối cùng của chúng tôi được thêm vào nó (30px
).
Nó hoạt động tốt nhất nếu nội dung một dòng không đạt gần chiều rộng đầy đủ của vùng chứa.
Ghi chú nhanh:
calc()
(list of support):before
giả lớp (list of support)inline-block
để theo dõi chiều rộng nội dung.HTML Code:
<h1>Success Cases</h1>
<p><span class="indent">Single line Single line</span></p>
<p><span class="indent">The quick brown fox jumped over the lazy dog. The quick brown fox jumped over the lazy dog. The quick brown fox jumped over the lazy dog.</span></p>
<h1>Failure Cases</h1>
<p><span class="indent">Single line Single line Single 1</span></p>
<p><span class="indent">Single line Single line Single line</span></p>
Mã CSS:
p {
background-color: #ccc;
margin: 10px;
width: 200px;
}
p > .indent {
display: inline-block;
}
p > .indent:before {
background-color: red;
content: "";
float: left;
width: calc(100% - 200px + 30px);
height: 1em;
}
Điều đó thực sự khá tuyệt vời; làm tốt! :) –
wow, giải pháp tốt đẹp :) –
Tôi nghĩ rằng ** demo ** của bạn không thực sự trực quan cho những gì OP ** thực sự ** muốn (như tưởng tượng ': multiline' pseudo-class), bạn có thể chỉnh sửa bản demo không do đó nếu 'div' chỉ chứa 1 dòng đơn, màu nền của nó sẽ là' xanh lục' và nếu nó chứa nhiều hơn 1 dòng (nhiều dòng), màu nền của nó phải là 'đỏ'? Trong trường hợp chung, chúng ta cần nhiều thuộc tính phong cách hơn là màu nền. –
CSS có pseudo-yếu tố ':: đầu line', nhưng đó là chỉ dựa trên dòng bộ chọn có sẵn trong CSS, không có khả năng thực sự để tạo ra các kiểm tra hoặc kiểu dáng có điều kiện. Bạn muốn định dạng nội dung như thế nào? –
div này sẽ là div "cảnh báo" và tôi muốn tạo 'padding-left: 0px' nếu nó chỉ có một dòng, nếu không' padding-left: 5px' –