border-radius; переполнение: скрыто, и текст не обрезан

#firefox #google-chrome #clipping #css

#firefox #google-chrome #обрезка #css

Вопрос:

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

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

В основном это видно в Firefox 3.x и более старых версиях Chrome

Вот пример кода, с которым можно поиграть:

http://jsfiddle.net/vfp3v/1/

 div {
    -moz-border-radius: 45px;
    border-radius: 45px;
    background-color: #ccc;
    font-size: 100px;
    color: #777;
    line-height: 70%;
    overflow: hidden;
    width: 257px;
}
  

рывок:

введите описание изображения здесь

Обратите внимание, что это исправлено в новых Chrome и FireFox 4 — the shui:

введите описание изображения здесь

Большинство пользователей нашего сайта используют Firefox 3.6, поэтому хотели бы иметь возможность предоставить элегантное решение и для них. Любая помощь приветствуется! Приветствия

Комментарии:

1. вау … это кажется непростой задачей …. удачи, лол

2. Изображение не будет работать, поскольку текст генерируется из заголовков сообщений в блоге.

Ответ №1:

Это работает в FF 3.6:http://jsfiddle.net/vfp3v/15

У этого есть некоторые недостатки, как вы можете видеть во втором примере (в FF 3.6) обрезанная граница имеет сплошной цвет, поэтому, если вы используете какой-то фон, это может выглядеть некрасиво. Просто взгляните на это, это может соответствовать вашим потребностям.

Я только что добавил интервал:

 <div><span></span>WXYZ</div>
  

а затем расположил его поверх текста с рамкой того же цвета, что и фон, и смещением размером с границу:

 div{
    position:relative;
    etc...
}
span{ 
    position:absolute; display:block; width:100%; height:100%;
    border:25px solid #fff; top:-25px; left:-25px;
    -moz-border-radius: 70px; border-radius: 70px; /* 45 radius   25 border */       
}
  

редактировать: только что протестировал это в Chrome 10.0.6 (в котором есть ошибка обрезки), и это сработало!

В браузерах, которые корректно поддерживают border-radius, диапазон (и его цвет границы) даже не виден, потому что он обрезан (переполнение: скрытый).

Комментарии:

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

2. Это действительно единственный большой недостаток этого решения. С фоновыми изображениями я не могу придумать ни одного хорошего решения, я думаю, что в конечном итоге вы всегда получаете метод покрытия частей, которые должны быть скрыты. Или просто добавьте достаточное количество отступов, чтобы обрезка никогда не требовалась…

3. в качестве общей информации наше текущее частичное «решение» заключается в том, чтобы текст имел альфа-прозрачность 20%, чтобы обрезка текста была менее заметной, но высококонтрастный сплошной цвет bg выделял текст. Все еще недопустимое обрезание / маскирование, но шаг в правильном направлении

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