Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Create a cross shape in CSS

IS it possible, I know all the following shapes are possible in this link:

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

but cross must be possible too. When I say cross I mean like this:

enter image description here

like image 845
user1937021 Avatar asked Jun 28 '13 07:06

user1937021


People also ask

How do you cross an image in CSS?

Use a simple × symbol - 100% cross browser, no transforms/pseudo elements needed.


2 Answers

You could achieve something like this with pseudoelements only:

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%;
}

The size of the cross will proportionally scale, according to the width and height of the #cross element


Update: another solution (using less code) could simply involve multiple linear-gradients (without pseudolements) e.g.

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%),
}
like image 75
Fabrizio Calderan Avatar answered Sep 17 '22 18:09

Fabrizio Calderan


Of course it is. You just have to use two elements : See http://jsfiddle.net/92XTx/2/

The enclosing div is relatively positioned so that both children can be absolutely positioned.

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

Here they are both absolutely positioned:

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

to make them superpose.

And then create your shapes:

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

.cross-horizontal {
    top: 33%;   
    width: 100%;
    height: 33%;
}
like image 38
Jerska Avatar answered Sep 19 '22 18:09

Jerska