2013-06-28 20 views
13

là nó có thể, tôi biết tất cả các hình dạng sau đây có thể xảy ra trong liên kết này:Tạo một hình chữ thập trong CSS

http://css-tricks.com/examples/ShapesOfCSS/

nhưng quả tạt phải tốt quá. Khi tôi nói chéo Ý tôi là như thế này:

enter image description here

+3

Sử dụng hai phần tử xếp chồng lên nhau? Hoặc thậm chí tốt hơn: một phần tử với một :: sau phần tử giả (hoặc :: trước) – Kyle

+1

Bạn không thể làm điều đó với một phần tử duy nhất .. Tốt hơn đi cho SVG hoặc canvas ... –

+2

Chữ thập thực sự đã được thêm vào css-tricks ngay bây giờ: https://css-tricks.com/examples/ShapesOfCSS/ – tsiorn

Trả lời

38

Bạn có thể đạt được một cái gì đó như thế này với chỉ pseudoelements:

http://jsbin.com/upiyoc/1/edit

#cross { 
    width: 100px; 
    height: 100px; 
    position: relative; 
} 

#cross:before, #cross:after { 
    content: ""; 
    position: absolute; 
    z-index: -1; 
    background: #d00; 
} 

#cross:before { 
    left: 50%; 
    width: 30%; 
    margin-left: -15%; 
    height: 100%; 
} 

#cross:after { 
    top: 50%; 
    height: 30%; 
    margin-top: -15%; 
    width: 100%; 
} 

Kích thước của cây thập tự tương ứng sẽ mở rộng quy mô, theo với các thành phần widthheight của các yếu tố #cross


Cập nhật: một giải pháp khác (sử dụng mã ít hơn) có thể đơn giản liên quan đến nhiều gradient tuyến tính (không có giả), ví dụ:

http://codepen.io/anon/pen/zxwgPo

#cross { 
    width: 100px; 
    height: 100px; 

    background: linear-gradient(to bottom, transparent 35%, 
             #d00 35%, 
             #d00 65%, 
             transparent 65%), 

       linear-gradient(to right, transparent 35%, 
             #d00 35%, 
             #d00 65%, 
             transparent 65%), 
} 
+0

Bất cứ ai có thể cho tôi biết tại sao "tuyệt đối" là bắt buộc phải không? Tôi đã thử nghiệm nó trên codepen và nếu bạn thay đổi nó tương đối hoặc lấy nó ra, nó sẽ không hiển thị ... ngay cả với chiều cao quy định và chiều rộng pixel .... help..its lái xe cho tôi điên không biết; ( – carinlynchin

+1

không có vị trí : tuyệt đối, bạn nên cho chúng hiển thị (hoặc float) nếu không thì các pseudolements không thể nhìn thấy được (chúng không phải là các phần tử thực, và thuộc tính 'content' của chúng trống) ở vị trí: tuyệt đối làm cho không cần thiết sử dụng thuộc tính float (hoặc display) – fcalderan

+0

oh ok ... vì vậy bất kỳ loại yếu tố giả với nội dung không có tuyệt đối? bạn có thể chỉ cho tôi nơi mà nó nói rằng trong w3 Những điều như thế này tôi muốn tôi biết làm thế nào để tìm kiếm trong điều đó lol – carinlynchin

6

Tất nhiên nó được. Bạn chỉ cần sử dụng hai yếu tố: Xem http://jsfiddle.net/92XTx/2/

Div kèm theo là relative được định vị sao cho cả hai trẻ em đều có thể được định vị hoàn toàn.

#cross { 
    position: relative; 
    width: 150px; 
    height: 150px; 
} 

Ở đây họ đều hoàn toàn vị trí:

#cross div { 
    position: absolute; 
    background: red; 
} 

để làm cho họ chồng vật nầy lên vật khác.

Và sau đó tạo ra hình dạng của bạn:

.cross-vertical { 
    left: 33%; 
    width: 33%; 
    height: 100%; 
} 

.cross-horizontal { 
    top: 33%; 
    width: 100%; 
    height: 33%; 
} 
2

này có thể được thực hiện với một thường xuyên '+' cộng với nhân vật cùng với một text-stroke

DEMO (Webkit,Android only)

div { 
 
    font-size: 80px; 
 
    -webkit-text-stroke: 20px red; 
 
    display: inline-block; 
 
    padding: 0 20px; 
 
}
<div>+</div>

3

Bởi vì tất cả các câu trả lời tôi thấy ở đây trông hoặc dài hoặc nhà cung cấp-prefix-phụ thuộc,

#cross { 
 
    background: red; 
 
    height: 100px; 
 
    position: relative; 
 
    left: 50px; 
 
    width: 20px; 
 
} 
 
#cross:after { 
 
    background: red; 
 
    content: ""; 
 
    height: 20px; 
 
    left: -40px; 
 
    position: absolute; 
 
    top: 40px; 
 
    width: 100px; 
 
}
<div id="cross"></div>

0

CSS transform có thể dễ dàng sử dụng để đạt được cộng với hình

.close { 
    position: absolute; 
    right: 10px; 
    top: 6px; 
    width: 20px; 
    height: 20px; 
    opacity: 0.3; 
} 
.cross:before, .cross:after { 
    position: absolute; 
    left: 15px; 
    content: ' '; 
    height: 21px; 
    width: 2px; 
    background-color: #333; 
} 
.cross:before { 
    transform: rotate(0deg); 
} 
.cross:after { 
    transform: rotate(-90deg); 
} 
Các vấn đề liên quan