2012-04-03 2 views
7

Есть ли простой способ стилизовать элемент?Уголки клипов CSS?

Example

предполагается использовать на мобильном телефоне, так CSS3 полностью доступен. Не могу придумать простой способ. Изображения не могут быть и речи.

Он должен быть этим блочными и там должен быть текстом внутри (это блочная кнопка 8 бит)

+1

Вы ищете закругленными углами или маленькие квадратики удалены из них? – mikevoermans

+0

Изображение обычно стоит тысячи слов, но в этом случае вам нужно еще несколько слов, чтобы объяснить картинку. Или вы действительно хотите * точно * что показано? – gilly3

+0

Вот и все. Квадраты вычитаются из bg по углам. Это часть 8-битной игры в браузере. Надеюсь, это имеет смысл, почему мне нужны эти блочные взгляды :) И там должен быть текст в этом элементе – Max

ответ

5

Это отскакивает от начала игры, но это достаточно другое, чтобы оправдать собственный ответ.

  1. Вместо того, чтобы наносить цветной блок чрезмерно, он добавляет только элементы красного цвета, позволяя фон показывать. ОДНАКО, чтобы правильно рассчитать (чтобы они были квадратными углами!) Мне пришлось установить фиксированную ширину шириной . Вероятно, есть какой-то дурацкий способ сделать это с процентами, но для доказательства концепции это было слишком страшно, чтобы созерцать. Так как требование для фиксированной высоты переменной ширины, это должно работать.

  2. Псевдоэлементы должны иметь контент, иначе они «рушится». Содержимое может быть пустым, но это свойство необходимо установить.

CSS:

/* main button block */ 
.button { 
    display:inline-block; 
    background: #f00; 
    position: relative; 
    line-height: 60px; 
    text-align: center; 
    padding: 0 20px; 
    height: 60px; 
    margin-left: 0.5em; 
} 

/* common background color to all */ 
.button, .button::before, .button::after { 
    background-color: #f00; 
} 

/* shared styles to make left and right lines */ 
.button::before, .button::after { 
    content: ""; 
    position: absolute; 
    height: 50px; 
    width: 5px; 
    top: 5px; 

} 

/* pull the left 'line' out to the left */ 
.button::before { 
    left: -5px; 
} 

/* pull the right 'line' out to the right */ 
.button::after {  
    right: -5px; 
} 

Fiddle: http://jsfiddle.net/3R9c5/2/

+0

Отлично! Просто отлично! Спасибо, брхейм! – Max

+0

Не беспокойтесь! Это была приятная задача. :-) –

0

атрибутом CSS граница радиуса

+0

Может ли это сделать квадраты? – Max

+0

A Pixel - это квадрат, но я предполагаю, что вы не имеете в виду это - так ваш ответ: нет. Пограничный радиус создаст закругленные границы. – feeela

+0

Неверный ответ, на самом деле не видел квадратов! –

0

возможно this поможет. Или вы можете просто добавить новый класс, «кадры», например

.cadre 
{ 
border-radius: 10px; 
} 

в файл CSS, то повлиять на него в дела.

0

Не думаю border-radius это можно осуществить. Это самый простой способ, которым я могу думать:

http://jsfiddle.net/DpLdt/

CSS:

body { 
background:blue; 
} 
div#clipcorners { 
width:500px; 
height:200px; 
background:red; 
position:relative; 
margin:100px auto; 
} 
span#a,span#b { 
position:absolute; 
width:10px; 
height:180px; 
top:10px; 
background:red; 
} 
span#a { 
left:-10px; 
} 
span#b { 
right:-10px; 
} 

HTML:

<div id="clipcorners"> 
<span id="a"> 
</span> 
<span id="b"> 
</span> 
</div>​ 
2

Вы можете вставить каждый из этого четыре блочные -корни, добавляя псевдоэлементы через ::before или ::after.

.: например

.button { 
    background: #f00; 
    position: relative; 
} 

/* corner top left */ 
.button::after { 
    position: absolute; 
    top: 0; left: 0; 
    width: 5px; height: 5px; 
    background: #00f; 
} 

/* corner top right */ 
.button::after { 
    position: absolute; 
    top: 0; right: 0; 
    width: 5px; height: 5px; 
    background: #00f; 
} 

/* corner bottom left */ 
/* … */ 
+0

согласился, я пытался разработать ту же концепцию. – mikevoermans

+0

Мне нравится начало этого подхода. Трудная часть - выяснить, как получить этот 4-й угол. ;-) Возможно, нужно добавить ОДИН дополнительный бит разметки, чтобы сделать это. D'oh, также он не работает вообще: http://jsfiddle.net/3R9c5/ –

+0

Фон может быть другим, у меня есть градиентный фон на этой странице :(Да, я знаю, 8 бит и градиент, как whaaaaaaaa. – Max

3

Как насчет this?

HTML:

<div class="block">(text goes here)</div> 

CSS:

body {background:#1990D7;} 
.block {background:#FF1200; line-height:52px; margin:8px auto; width:359px; 
    position:relative; text-align:center; font-weight:bold; color:yellow} 
.block::before {display:inline-block; background:#FF1200; content:''; 
    position:absolute; top:4px; left:-4px; bottom:4px; width:4px;} 
.block::after {display:inline-block; background:#FF1200; content:''; 
    position:absolute; top:4px; right:-4px; bottom:4px; width:4px;} 

Edit: обновлено после последнего проникновения в требования вопроса.

+0

Неплохо! Нужно выяснить, как избежать жесткой кодировки. – Max

+0

Да, поскольку с углами 4px внешние края должны быть на 8 пикселей меньше основного прямоугольника. Гектометр Что делать, если мы применяем дополнительные прямоугольники слева и справа вместо верхнего и нижнего? Будет ли это работать? Установлена ​​ли высота? –

+0

diff widths, fixd height http://imm.io/kZvh http://imm.io/kZvn – Max

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