Возможно кому-нибудь пригодиться метод создания круглых углов в IE8 без дополнительного кода на css.
Суть проблемы: IE8 не понимает expression, SVG и не понимает CSS3, а хочется задав блоку дополнительный класс получить уголочки. Есть VML, но не выполняется условие про дополнительный код.
Короче, вот стили.
Рабочий пример
Кстати этот код отлично работает в Опере, что при необходимости позволит отказаться от SVG.
Есть и ограничения, как без них...
— Нет возможности положить в блок background-image. Фон уже занят одним из углов.
— Прозрачные углы возможны лишь для блока с заведомо известной высотой или шириной.
— при наличии у блока padding-top: > 0, придется ставить верхние углы руками. А все из за того, что нельзя дать .block:before {position: absolute} =(
Больше всего бесит, что нельзя для .b-round-example:before задать position:absoute.
Ну и то, что фон блока занят одним из уголков тоже не очень хорошо. Может у кого будут идеи по доработке?
И на закуску баг:
Углы лежащие в background блока и в first-letter (верхний левый угол) должны быть в одном спрайте, иначе background блока отображаться не будет.
March 31 2009, 14:41:39 UTC 3 years ago
ps: харисовские префиксы пошли в массы )
March 31 2009, 14:43:07 UTC 3 years ago
March 31 2009, 14:44:40 UTC 3 years ago
А если просто сделать чуть универсальнее?
3 years ago
March 31 2009, 14:45:35 UTC 3 years ago
А вакуум... Когда как.
March 31 2009, 14:45:54 UTC 3 years ago
March 31 2009, 14:47:09 UTC 3 years ago
March 31 2009, 14:56:38 UTC 3 years ago Edited: March 31 2009, 15:02:15 UTC
.b-round { position: relative; padding: 20px; background: #EEE; } .b-round:before, .b-round:after, .b-round-inner:before, .b-round-inner:after { position:absolute; background:#C00; width:10px; height:10px; content:''; } .b-round:before { top:0; left:0; } .b-round:after { top:0; right:0; } .b-round-inner:before { right:0; bottom:0; } .b-round-inner:after { bottom:0; left:0; } <div class="b-round"> <div class="b-round-inner"> LoL </div> </div>upd: проверил в IE8 — отлично работает безо всякого трюкачества
March 31 2009, 15:13:51 UTC 3 years ago
А все таки если необходимо использовать один блок?
March 31 2009, 15:22:28 UTC 3 years ago
.b-round:before:before, к сожалению, не сработал (Я понимаю, что любой дурак может с двумя блоками, но голова в шишках от подобных решений не позволяет считать это решение полноценным. Да и expression'ы для 50-ти уголков на странице для IE6–7 — это жестоко, даже если они написаны правильно.
Так что экста-разметка рулит и решает. К большому нашему сожалению.
Кстати, как вы собираетесь вежливо отфильтровать Opera, чтобы вкрутить для неё SVG?
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
March 31 2009, 15:26:14 UTC 3 years ago
Все работает кроме одного браузера ИЕ8.
Принципиальных причин не добавлять дополнительные блоки нет кроме неудобства.
March 31 2009, 15:29:16 UTC 3 years ago
В такой же узкоспецифичной ситуации. Я просто воспринял это как универсальное решение, вот и разошёлся. Пардон :)
March 31 2009, 16:22:23 UTC 3 years ago
March 31 2009, 16:26:18 UTC 3 years ago Edited: March 31 2009, 16:26:53 UTC
SPAN:before { content:'\00A0\00B7\00A0\00A0'; } /* If less than IE8 */ SPAN { x:expression(!this.a?(this.a=1,this.innerHTML=' · '+this.innerHTML):0); }3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
March 31 2009, 15:02:39 UTC 3 years ago
March 31 2009, 15:15:36 UTC 3 years ago
И это не куча кода, я вас уверяю =)
March 31 2009, 15:15:59 UTC 3 years ago
А тут раз - и симпатичнее)
March 31 2009, 15:19:45 UTC 3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
March 31 2009, 16:47:53 UTC 3 years ago
И еще я не понял, у вас выложен код только для ИЕ8? Я не вижу углов ни в Опере, ни в ИЕ6-7.
March 31 2009, 17:26:04 UTC 3 years ago
March 31 2009, 18:03:26 UTC 3 years ago
April 1 2009, 15:08:53 UTC 3 years ago
April 1 2009, 15:12:54 UTC 3 years ago
3 years ago
3 years ago
March 31 2009, 18:11:32 UTC 3 years ago
Код внутри внешнего экспрешшена выполняется на отлично.
А еще, кстати, недавно обнаружил, что ФФ не понимает абсолютное позиционирование для картинки вставленной через :after(before)&
March 31 2009, 18:18:36 UTC 3 years ago
3 years ago
3 years ago
March 31 2009, 18:44:05 UTC 3 years ago
http://chuprin.com/sandbox/corners/