Невозможно добавить маржу к элементу в Safari и Chrome (WebKit)

StackOverflow https://stackoverflow.com/questions/2568591

  •  24-09-2019
  •  | 
  •  

Вопрос

РЕДАКТИРОВАТЬ : по состоянию на 11.06.2012 эта ошибка была окончательно исправлена! https://bugs.webkit.org/show_bug.cgi?id=35981#c1

У меня довольно простая разметка:

родовое слово

Я пытаюсь добавить небольшой запас в нижнюю часть элемента legend, это отлично работает в Firefox 2 и 3, а также в IE 5-8, однако в Safari и Chrome добавление кода margin ничего не дает.Насколько я знаю, legend - это просто еще один элемент уровня блока, и у Webkit не должно возникнуть проблем с добавлением к нему margin, или я ошибаюсь?

Это было полезно?

Решение

После небольшого исследования я нашел способ решения этой проблемы, который, на мой взгляд, является наименее "хакерским" методом ее решения.Использование неприятных хаков нацеливания на webkit на самом деле было невозможным, но я обнаружил, что свойство -webkit-margin-collapse: separate, похоже, работает, предотвращая сворачивание полей элементов, как это описано.

Итак, в моем сценарии следующее устраняет проблему, добавляя поле вверху первого элемента метки (прямо под легендой) в наборе полей:

родовое слово

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

Если кому-то интересно, кто-то действительно отправил отчет об ошибке # 35981

https://bugs.webkit.org/show_bug.cgi?id=35981

Спасибо за ваш вклад.

Другие советы

Что ж, <legend> на самом деле не "просто еще один элемент уровня блока".Может быть, так и должно быть, но факт в том, что он по своей сути будет иметь особенности компоновки в том смысле, что он должен делать что-то довольно странное по мере движения элементов.В IE и Firefox влияние полей и отступов на элементы <legend> сильно различается.

Вы хотите просто отделить содержимое сгенерированного кода кода от верхнего края поля?Если да, то я бы попробовал поиграть с генеральным кодом самого набора полей.

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

родовое слово

Это может немного прояснить то, что я пытаюсь сказать: http://jsfiddle.net/8fyvY/

Я только что обнаружил, что добавление отступа в 1 пиксель к набору полей, кажется, заставляет его внезапно узнать о полях, которые он содержит (созданный интервал составляет более 1 пикселя).

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

родовое слово

Я получаю двойную маржу в Chrome.Тогда просто решите сделать следующее

родовое слово

Надеюсь на помощь.Ура!

Чтобы легенда работала с нижней границей и полем во всех браузерах, я вставляю диапазон внутри легенды, помещаю границу в диапазон, устанавливаю поле легенды на 0 и добавляю отступ в нижнюю часть легенды.

например

родовое слово
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top