可能ですか、このリンクでは次のすべての形状が可能であることを知っています。
http://css-tricks.com/examples/ShapesOfCSS/
しかし、クロスも可能でなければなりません。私がクロスと言うとき、私はこのように意味します:
あなたは疑似要素だけでこのようなことを達成できます:
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%;
}
#cross
要素のwidth
とheight
に応じて、十字のサイズは比例して拡大縮小されます
更新:別のソリューション(より少ないコードを使用)は、単純に複数の線形勾配(疑似要素なし)を含むことができます。
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%),
}
もちろん。 2つの要素を使用する必要があります: http://jsfiddle.net/92XTx/2/ を参照
囲んでいるdivはrelative
ly配置されているため、両方の子を絶対的に配置できます。
#cross {
position: relative;
width: 150px;
height: 150px;
}
ここでは、両方とも絶対的に配置されています。
#cross div {
position: absolute;
background: red;
}
それらを重ね合わせる。
次に、形状を作成します。
.cross-vertical {
left: 33%;
width: 33%;
height: 100%;
}
.cross-horizontal {
top: 33%;
width: 100%;
height: 33%;
}
ここで私が見るすべての答えは、長いかベンダーのプレフィックスに依存しているように見えるので、
#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>
これは、通常の「+」プラス文字とtext-stroke
[〜#〜] demo [〜#〜]( Webkit、Androidのみ )
div {
font-size: 80px;
-webkit-text-stroke: 20px red;
display: inline-block;
padding: 0 20px;
}
<div>+</div>
CSS Transformを使用すると、簡単にプラスの形状を実現できます
.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);
}