2016-11-27 2 views
0

Я хотел бы воспроизвести изображение ниже, используя только html и css, если это возможно. Я бы хотел использовать это как «значок» с меняющимися значками и цветами. Статическое изображение не будет работать для меня:Могу ли я воспроизвести это изображение, используя только html и css - в частности, форму и ребра?

enter image description here

Все кажется выполнимым, но я не знаю, как воспроизвести реальную форму самого знака (зеленая часть). Есть ли какая-то конкретная директива css, которую мне нужно изучить, чтобы достичь этого?

РЕДАКТИРОВАТЬ: Появляется беспокойство «Дублирующийся вопрос». Обратите внимание, что связанный с вопросом НЕ включает изображение или текст в центре шестиугольника, это делает. Это добавляет немного сложности в проблему и, следовательно, новый вопрос. Основываясь на ответах в этом вопросе, я смог сформулировать лучший поиск в Google и наткнулся на код, который отлично работал для меня. Я голосую за повторное открытие вопроса.

+2

Почему бы просто не использовать SVG? – Nit

+0

Потому что в исходном вопросе говорится «только html и css, если возможно». –

+2

@NathanielFlick оригинальные вопросы обычно не знают больше, чем .. то, что они уже знают. OP, осведомленный о SVG, вероятно, сообщит об этом. –

ответ

4

Да возможно, но лучше, если вы используете SVG Вот пример. с закругленным углом

body{margin:0;} 
 
.hexagon { 
 
    width: 120px; 
 
    height: 60px; 
 
    position: relative; 
 
    margin:50px 10px; 
 
} 
 
.hexagon, .hexagon:before, .hexagon:after { 
 
    background: green; 
 
    border-radius: 5px 
 
} 
 
.hexagon:before, .hexagon:after { 
 
    content: ""; 
 
    position: absolute; 
 
    left: 23px; 
 
    width: 74px; 
 
    height: 70px; 
 
    -moz-transform: rotate(145deg) skew(22.5deg); 
 
    -webkit-transform: rotate(145deg) skew(22.5deg); 
 
    transform: rotate(145deg) skew(22.5deg); 
 
} 
 
.hexagon:before { 
 
    top: -35px; 
 
} 
 
.hexagon:after { 
 
    top: 35px; 
 
} 
 
.hexagon span { 
 
    position: absolute; 
 
    top: 0; 
 
    left: 0; 
 
    width: 120px; 
 
    height: 70px; 
 
    background:green; 
 
    z-index: 1; 
 
}
<div class="hexagon"><span></span></div>

+1

Мне нравится, как вы нажимаете перекос, чтобы получить округление! Это происходит не во всех углах равномерно (в FF), но я не думал об этом. –

+0

@NathanielFlick Я знаю, что все углы не закруглены. Я также не рассматриваю использование css для его создания. : P SVG проще. Мой предыдущий ответ был таким же, как и ваш. Поэтому я редактирую свой ответ :) –

3

CSS Tricks имеет отличную страницу по фигурам, more here, и вот как я выполнил бы то, что вы хотите, вместо текста, который у меня есть в форме div, замените своим шрифтом значка выбора и его html и css (игнорировать Верхнее поле я добавил к шестиугольника, это только там, так что вы можете увидеть все это:.

#hexagon { width: 100px; height: 55px; background: red; position: relative; margin-top: 3em; line-height: 55px; text-align: center; color: white;} 
 

 
#hexagon:before { content: ""; position: absolute; top: -25px; left: 0; width: 0; height: 0; border-left: 50px solid transparent; border-right: 50px solid transparent; border-bottom: 25px solid red; } 
 

 
#hexagon:after { content: ""; position: absolute; bottom: -25px; left: 0; width: 0; height: 0; border-left: 50px solid transparent; border-right: 50px solid transparent; border-top: 25px solid red; }
<div id="hexagon">X THING</div>

+0

репутация для ссылки! удивительная страница. –

+0

Добро пожаловать! Я нашел его полезным много раз. В то время как я люблю SVG, я по-прежнему предпочитаю сначала делать это с помощью html и css, прежде чем добавлять его. Это еще более сложный код с большим количеством шансов на неправильный экспорт и возможность раздувания функций и некоторые небольшие проблемы. –

Смежные вопросы