It is possible to draw various figures by drawing of CSS and CSS3. It doesn’t become a reason why drawing by pure CSS is not used for the web expression though it is
necessary to consider how to support a browser of IE8 or less.
CSS3 is convenient, and sexy. But, it looks complex.
It is necessary to enjoy the expression by CSS3 positively. I think that it is the best practice of the understanding of css3.
However, the clue of something is necessary.
I think that you should understand the method of making a basic figure as for the first step. As much as the time before when we learned Adobe Illustrator.
There is a good explanation by Mozilla. I brought it together by the viewpoint of drawing style in a basic figure.
square
class:square
/*square. This shape is origin of other shapes.*/ .square { width:100px; height:100px; margin:20px; position:relative; background:rgb(100,100,255); } .square:hover {/*box-shadow is For sample*/ -moz-box-shadow:3px 3px 3px rgba(0,0,0,0.7); -webkit-box-shadow:3px 3px 3px rgba(0,0,0,0.7); box-shadow:3px 3px 3px rgba(0,0,0,0.7); }
cross
class:square cross
.square.cross { width:25px; left:37.5px; } .cross::before { content:""; display:block; width:100%; height:100%; -moz-transform:rotate(90deg); -webkit-transform:rotate(90deg); transform:rotate(90deg); background:rgb(80,80,200); }
The width of the element is specified for 1/4 of the height. And make before pseudoelement content, change to block, And 100% width and height, And 90-degree rotation.
The reference point of the rotation is possible to specify with transform-origin. But, that’ s default values is center. So, I don’t touch it.
times
class:square cross batu (‘BATU’ is a name of the sign that shows ‘Times’ in Japanese.)
.shapesDemo .sample .square.cross.batu { -moz-transform:rotate(45deg); -webkit-transform:rotate(45deg); transform:rotate(45deg); }
Only 45-degree rotation added to “cross”.
asterisk
class:square cross asterisk
.square.cross.asterisk::before { -moz-transform:rotate(60deg); -webkit-transform:rotate(60deg); transform:rotate(60deg); } .square.cross.asterisk::after { /*that increases one line Content*/ content:""; display:block; width:100%; height:100%; -moz-transform:rotate(-60deg); -webkit-transform:rotate(-60deg); transform:rotate(-60deg); background:rgb(50,50,200); /*Before pseudoelement has already been generated, so, the following specification is necessary to pile it up.*/ position:absolute; top:0; left:0; }
rounded square
class:square rounded
.rounded { -moz-border-radius:10px; border-radius:10px; }
To round the corner, border-radius is specified. in Firefox3.6,-moz- vender-prefix is necessary.
circle
class:square circle
.circle { -moz-border-radius:50%; border-radius:50px; }
When the value of border-radius is adjusted to 50% (height and width), square becomes circle.
Because it is not possible to specify it with % in webkit, it specifies it by the numerical value.I want to support % specification by all means.
By the way, I was not daily using the English word “Radius”. Other Japanese people too, I think.
However,I remembered “r”. Once upon a time, I learned it in the elementary school as formulas 2πr and πr2…
And when saying, other “There were a lot of car accidents of this road because “r” was large” etc. , the initial “r” was noticed to be used!
ellipse
class:square ellipse
.ellipse { height:50px; -moz-border-radius:50%/25%; border-radius:50px/25px; }
Four values can be specified for border-radius.top-left,top-right,bottom-right, and bottom-left. In addition, it is possible to specify it by delimiting radius in the direction of x and y by/as a value of radius of each corner.
There are a major axis and a minor axis in the oval. If it is an oblong oval, half the value of width becomes a major axis, and half the value of height becomes a minor axis.
When the ratio in length and breadth is an oval of 1:2,X of radius of four corners is adjusted to 50%, and y is adjusted to 25%.
It is necessary to specify webkit by the numerical value.
tube
class:square tube
.tube { -moz-border-radius:50%/25%; border-radius:50px/25px; } .tube:after{/*Upper side*/ content:""; display:block; position:absolute; top:2px; left:2px; width:96px; height:48px; -moz-border-radius:50%/25%; border-radius:50px/25px; background:rgb(150,150,255); }
When x of four “border-radius” is adjusted to 50%, and y is adjusted from 26 to less than 50%, it becomes the outline of the cylinder that collapses to the vertical direction.
It becomes a tube if content is generated with ::after pseudoelement of this element, the same specification as the “oval” is done, and it arranges it by the absolute configuration up.