Создание кросс-формы в CSS - программирование
Подтвердить что ты не робот

Создание кросс-формы в CSS

Возможно ли, я знаю, что в этой ссылке возможны следующие формы:

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

но крест тоже должен быть возможен. Когда я говорю "крест", я имею в виду вот что:

enter image description here

4b9b3361

Ответ 1

Вы можете достичь чего-то подобного только с псевдоэлементами:

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

Размер креста будет пропорционально масштабироваться в соответствии с width и height элемента #cross


Обновление: другое решение (с использованием меньшего кода) может просто включать несколько линейных градиентов (без псевдоуровней), например.

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

Ответ 3

Поскольку все ответы, которые я вижу здесь, выглядят либо длинными, либо зависимыми от поставщика-префикса,

#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>

Ответ 4

Это можно сделать с помощью обычного символа "+" плюс вместе с text-stroke

DEMO (Webkit, только для Android)

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

Ответ 5

Преобразование CSS может быть легко использовано для достижения плюс формы

.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);
}