Ошибка Safari с рендерингом закругленных углов CSS - PullRequest
1 голос
/ 18 мая 2011

Запуск Safari 5.05.

Этот CSS отлично выглядит в Chrome и Firefox, но при отображении в Safari граница с левой стороны охватывает только начало радиуса границы.Это оставляет зазор сверху / снизу.

.boxWithLeftBorder {
height:100px;
width:100px;
background: #ddd;
-moz-border-radius:10px;
-webkit-border-radius:10px;
border-radius:10px;
border-left: 20px;
border-color:#000;
border-style:solid;}    

Я включил изображение ниже для пояснения.

Учитывая мудрость толпы, я предполагаю, что это либо хорошо известно, либо существует простой обходной путь.Я гуглил в меру своих возможностей и был бы признателен за любые идеи.Спасибо !!

boxWithLeftBorder image

Ответы [ 3 ]

3 голосов
/ 18 мая 2011

Используя некоторые креативные CSS псевдоэлементы (:before или :after), вы можете добиться своего эффекта и одновременно использовать минимальную разметку , Примечание: выделение цвета красной границы - мое.

enter image description here

HTML:

<div class="boxWithLeftBorder">Lorem Ipsum</div>

CSS:

.boxWithLeftBorder {
    background: #ddd;
    border: 3px solid #000;
    border-radius: 10px;
    -moz-border-radius: 10px;
    -webkit-border-radius: 10px;
    height: 100px;
    position: relative;
    width: 100px;
    padding: 0;
}

.boxWithLeftBorder:before {
    background-color: #c00;
    border-bottom-left-radius: 5px;
    border-top-left-radius: 5px;
    -moz-border-radius-bottomleft: 5px;
    -moz-border-radius-topleft: 5px;
    -webkit-border-bottom-left-radius: 5px;
    -webkit-border-top-left-radius: 5px;
    content: "";
    display: block;
    float: left;
    height: 100%;
    width: 20px;
}

Редактировать эту скрипку: http://jsfiddle.net/BYa9C/5/

0 голосов
/ 18 мая 2011

Вы столкнетесь с проблемами, пытаясь сделать это таким образом, из-за того, как нарисованы границы - и капризов в разных браузерах на данный момент.

Вы можете взломать функциональность, добавив оболочкуbox:

.outer-box
{
  padding:2px 2px 2px 20px;
  border:none;
  -moz-border-radius:10px;
  -webkit-border-radius:10px;
  border-radius:10px;
  background:#000;
  width:100px;
  height:100px;
}
.inner-box
{
  border:none;
  -moz-border-radius:8px;
  -webkit-border-radius:8px;
  border-radius:8px;
  background:#ddd;
  width:100%;
  height:100%;
}

html:

<div class="outer-box">
  <div class="inner-box"></div>
</div>

Я оставляю префиксы -moz и -webkit, потому что там все еще есть значительное количество Firefox 3.5 и Safari 4.

Обратите внимание, что внутренняя коробка имеет меньший радиус.Это необходимо, потому что углы будут меняться при уменьшении размеров.

0 голосов
/ 18 мая 2011

Safari 5.05 и Firefox 3.6+ должны поддерживать border-radius без префикса -webkit- и -moz-.

Если у вас есть элементы внутри элементов с закругленными углами, необходимо иметь полностью прозрачный фон или сами закругленные углы (первый и последний элементы внутри обсуждаемого элемента)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...