Jak zrobić CSS3 zaokrąglone rogi ukryć przepełnienie w Chrome / Opera
Potrzebuję okrągłych rogów na rodzicu div, aby zamaskować zawartość z jego dzieci. overflow: hidden
działa w prostych sytuacjach, ale działa w przeglądarkach opartych na webkit i operze, gdy rodzic jest ustawiony względnie lub absolutnie.
CSS
#wrapper {
width: 300px;
height: 300px;
border-radius: 100px;
overflow: hidden;
position: absolute;
}
#box {
width: 300px;
height: 300px;
background-color: #cde;
}
HTML
<div id="wrapper">
<div id="box"></div>
</div>
Dzięki za pomoc!
UPDATE: błąd powodujący ten problem został naprawiony w Chrome. Nie testowałem ponownie opery ani Safari jednak.
12 answers
Znalazłem inne rozwiązanie tego problemu. Wygląda to na kolejny błąd w WebKit( lub prawdopodobnie Chrome), ale działa. Wszystko, co musisz zrobić-to dodać WebKit CSS Mask do elementu #wrapper. Możesz użyć pojedynczego piksela png, a nawet dołączyć go do CSS, aby zapisać żądanie HTTP.
#wrapper {
width: 300px; height: 300px;
border-radius: 100px;
overflow: hidden;
position: absolute; /* this breaks the overflow:hidden in Chrome/Opera */
/* this fixes the overflow:hidden in Chrome */
-webkit-mask-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC);
}
#box {
width: 300px; height: 300px;
background-color: #cde;
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-03 11:47:20
Dodaj indeks z do elementu border-radius ' D, A to zamaskuje rzeczy wewnątrz niego.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-08 14:37:49
Nieważne, udało mi się rozwiązać problem, dodając dodatkowy div między opakowaniem a pudełkiem.
CSS
#wrapper {
position: absolute;
}
#middle {
border-radius: 100px;
overflow: hidden;
}
#box {
width: 300px; height: 300px;
background-color: #cde;
}
HTML
<div id="wrapper">
<div id="middle">
<div id="box"></div>
</div>
</div>
Dziękujemy wszystkim, którzy pomogli!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-30 15:58:58
Nieprzezroczystość: 0.99; na wrapperze rozwiąż błąd webkit
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-03 12:22:43
Wygląda na to, że ten działa:
.wrap {
-webkit-transform: translateZ(0);
-webkit-mask-image: -webkit-radial-gradient(circle, white 100%, black 100%);
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-19 10:47:32
Brak odpowiedzi, ale jest to błąd w źródle Chromium: http://code.google.com/p/chromium/issues/detail?id=62363
Niestety, wygląda na to, że nikt nad tym nie pracuje. :(
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-06 02:07:13
Obsługiwane w najnowszych przeglądarkach chrome, opera i safari, możesz to zrobić:
-webkit-clip-path: inset(0 0 0 0 round 100px);
clip-path: inset(0 0 0 0 round 100px);
Zdecydowanie powinieneś sprawdzić narzędzie http://bennettfeely.com/clippy/!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-26 14:30:07
Zmień krycie elementu nadrzędnego z obramowaniem, a to spowoduje ponowne uporządkowanie ułożonych elementów. To zadziałało cudownie dla mnie po godzinach badań i nieudanych próbach. To było tak proste, jak dodanie krycia 0.99, aby ponownie zorganizować ten proces malowania przeglądarek. Sprawdź http://philipwalton.com/articles/what-no-one-told-you-about-z-index/
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-12 10:35:11
Bazując na doskonałej odpowiedzi graycrowa...
Oto bardziej realny przykład świata, który ma dwa cicular divs z pewną zawartością wypełniacza. Zastąpiłem mocno zakodowane tło png tylko wartością szesnastkową, tzn.
-=-webkit-mask-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC);
Zastępuje się
-webkit-mask-image:#fff;
# Patrz JSFiddle.. http://jsfiddle.net/hqLkA/Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-18 06:15:09
Jak dla mnie żadne z rozwiązań nie działało dobrze, tylko przy użyciu:
-webkit-mask-image: -webkit-radial-gradient(circle, white, black);
Na opakowaniu element wykonał zadanie.
Oto przykład: http://jsfiddle.net/gpawlik/qWdf6/74/
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-09 13:48:03
Zobacz jak to zrobiłem; Jsfiddle
Z kodem, który wstawiłem, udało mi się uruchomić go na Webkit (Chrome/Safari) i Firefox. Nie wiem czy działa z najnowszą wersją Opery. tak, działa pod najnowszą wersją Opery.
#wrapper {
width: 300px; height: 300px;
border-radius: 100px;
overflow: hidden;
position: absolute; /* this breaks the overflow:hidden in Chrome/Opera */
}
#box {
width: 300px; height: 300px;
background-color: #cde;
border-radius: 100px;
-webkit-border-radius: 100px;
-moz-border-radius: 100px;
-o-border-radius: 100px;
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-21 10:48:55
Jeśli chcesz utworzyć maskę dla obrazu i umieścić obraz wewnątrz kontenera, nie ustawiaj atrybutu 'position: absolute'. Wszystko, co musisz zrobić, to zmienić margines-lewy i margines-prawy. Chrome / Opera będzie stosować się do reguł overflow: hidden i border-radius.
// Breaks in Chrome/Opera.
.container {
overflow: hidden;
border-radius: 50%;
img {
position: absolute;
left: 20px;
right: 20px;
}
}
// Works in Chrome/Opera.
.container {
overflow: hidden;
border-radius: 50%;
img {
margin-left: 20px;
margin-right: 20px;
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-09 14:36:47