Баг в Опере c overflow: hidden и border-radius
Прочитал сегодня http://habrahabr.ru/post/141262/
Попробовал сделать, чтобы заработало в опере немного по другому не с помощью overflow:hidden в элементе с border-radius, а используя box-shadow и background: transparent правда понадобился третий элемент и есть определенные ограничения у этого решения, но вроде у меня в opere 11.61 заработало автору статьи не писал, нет прав на это в habre возможно, кому-то пригодится
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<style>
.wrap{
width:150px;
height:150px;
background:green;
position: relative;
overflow: hidden;
}
.p2{
width:400px;
height:400px;
background:red;
position: absolute;
border-radius:100%;
left: 20px;
top: 20px;
}
.p1{
width:150px;
height:150px;
position: absolute;
background:transparent;
border-radius:100%;
box-shadow: 0 0 1px 200px #fff;
}
</style>
</head>
<body>
<div class="wrap">
<div class="p2">This is Sparta!</div>
<div class="p1"></div>
</div>
</body>
</html>
|
Меньше читайте всяких дурачков на Хабре.
По коду - если уж фиксите баг для Оперы, отчего не заюзать псевдоэлементы, вместо того, чтобы плодить сущности без нужды. И таки Ваш пример сработает, только если цвет бэкграунда совпадает с цветом тени. Это очень жирный минус, особенно если бэкграунд не однотонный. Ну и Вы не пионер: http://forum.htmlbook.ru/index.php?showtopic=28923 http://forum.htmlbook.ru/index.php?showtopic=29990 http://www.alpatriott.ru/works/primer/opera-radius.html http://jsfiddle.net/x56G6/15/ http://www.komodomedia.com/blog/2010...s-and-avatars/ |
спасибо за ссылки, но там в основном бились с проблемой скругления углов у изображений в Опера - сейчас эта проблема не так актуальна - новые Оперы скругляют углы и у картинок.
А вот нормального решения (не затрагивающего фон снаружи) того что в Опера блок с overflow:hidden и со скругленными углами не правильно обрезает содержимое не нашел. Возможно, кто-то подскажет как это можно сделать. |
Ну по сути одно и тоже ведь!
Раз уж SelenIT не знает - то без вариантов пока. Он правда что-то говорил про поддержку старых версий Оперы фильтров для SVG и возможность через них использовать альфа-канал, но не разобрался в спеках. А по сабжу - скругляйте углы не только у обёртки, но и у вложенных элементов. Опера не "бажит", она всего лишь воспринимает блок как прямоугольник, что по сути так и есть ведь. Надо скруглять потомкам - им и скругляйте! В принципе решить задачу на чистом css можно, но нужно хорошо знать геометрию/алгебру и придётся повозиться с вычислением нужных размеров. Вот пример из статьи для Оперы - пришлось вводить дополнительный элемент, потому что Опера некорректно обсчитывает размеры при повороте (большой красный блок можно обрезать, оставив 13px сверху и повернуть на 45deg, но тогда между элементами возникает промежуток в полпикселя): http://jsfiddle.net/xEReQ/4/ |
Цитата:
|
Нет, просто давно занимается вёрсткой и знает кучу финтов... Пожалуй лучший специалст по HTML/CSS в рунете
|
попробовал используя на svg
и для удобства Raphael тег svg в моей опере 11.61 при border-radius и overflow: hidden вроде стал нормально обрезать контент по-моему можно использовать анимация для наглядности
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8>
<title>test</title>
<script src='http://yandex.st/raphael/1.5.2/raphael.min.js'></script>
<style>
body { background: url('http://visualliteracyksu2010.files.wordpress.com/2010/10/wpid-paper_texture.jpg') no-repeat; }
#notepad,
#notepad svg {
width: 150px; height: 150px;
background: green;
border-radius: 75px;
overflow: hidden;
}
</style>
<script>
window.onload = function () {
Raphael("notepad", 150, 150)
.circle(250, 250, 200)
.attr({
fill: '#f00',
'stroke-width': 0
})
.animate({cx: 200, cy: 200}, 3000);
}
</script>
</head>
<body>
<div id="notepad"></div>
</body>
</html>
|
90кБ исключительно для скругления углов в Опере?
и вопрос по библиотеке: она попиксельно умеет работать и сanvas поддерживает? P.S. Только Вы упростили задачу! Надо ещё текст вписать в дочерний объект (да так чтобы он не заходил за границу окружности)... |
Цитата:
методы для текста и не только, надеюсь, там найдете проблема была в overflow: hidden при border-radius - это вроде получилось |
Цитата:
|
| Часовой пояс GMT +3, время: 20:59. |