Как предотвратить прохождение границы набора полей через элемент легенды, окруженный тегом формы?

У меня есть форма с этими тегами: <form>, <fieldset> and <legend>.

Граница набора полей проходит через середину элемента легенды. Я все еще хочу, чтобы вокруг моей формы была граница, но я не хочу проходить через ее середину. Проблема такая: если я пробую в css только набор полей и легенду, все работает нормально, но если я еще добавляю стиль формы, я получаю ошибку, о которой я говорю.

.form {
  position: absolute;
  top: 50%;
  left: 50%;
  -ms-transform: translate(-50%, -50%);
  -webkit-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
  min-height: 50px;
  padding: 5px;
  margin: 10px;
  clear: both;
  float: left;
  width: 40%;
  text-align: left;
  border: 0px;
}
fieldset {
  padding: 10px;
  margin: 2px;
  border: 1px solid #000000;
  width: 60%;
}
legend {
  padding: 0px;
  border: 0px;
  color: #ff0000;
  text-transform: capitalize;
  font-size: 14px;
  font-weight: bold;
  display: inline-block;
}
<form>
  <fieldset>
    <legend>Title</legend>
  </fieldset>
</form>

Я предполагаю, что это конфликт между формой и стилем fieldset/legend. Причина, по которой я добавил position: absolute; и метод перевода, заключается в том, чтобы расположить форму посередине страницы браузера. Итак, как я могу избавиться от набора полей границы, проходящего через середину легенды, но при этом располагающего мою форму в центре страницы?


person Camryn    schedule 26.10.2015    source источник
comment
У вас опечатка...form вместо just form. form - это элемент... не класс.   -  person Paulie_D    schedule 26.10.2015
comment
Как это должно выглядеть?   -  person Paulie_D    schedule 26.10.2015
comment
даже если я удалю класс, все останется по-прежнему...   -  person Camryn    schedule 26.10.2015


Ответы (2)


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

form {
  position: absolute;
  top: 50%;
  left: 50%;
  -ms-transform: translate(-50%, -50%);
  -webkit-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
  min-height: 50px;
  padding: 5px;
  margin: 10px;
  clear: both;
  float: left;
  width: 40%;
  text-align: left;
  border: 0px;
}
fieldset {
  padding: 10px;
  margin: 2px;
  border: 1px solid #000000;
  width: 60%;
}
legend {
  padding: 0px;
  border: 0px;
  color: #ff0000;
  text-transform: capitalize;
  font-size: 14px;
  font-weight: bold;
  display: inline-block;
}
<form>
    <legend>Title</legend>
    <fieldset>
    </fieldset>
</form>

person TylerH    schedule 26.10.2015
comment
За исключением того, что это недопустимый HTML. Единственным разрешенным родителем legend является afieldset- developer.mozilla. org/en-US/docs/Web/HTML/Element/legend - person Paulie_D; 26.10.2015
comment
@Paulie_D Это правда, это недействительно, но все равно работает в каждом браузере. Однако я добавлю вопрос о достоверности своего ответа. - person TylerH; 26.10.2015
comment
Спасибо за добавление проблемы достоверности - person Drew; 17.07.2016

person    schedule
comment
О, и вы можете добавить цвет фона для легенды - person n1kkou; 26.10.2015
comment
Нет, это не работает с индексом z. Вместо этого я пробовал это с фоном раньше, но я не думал добавлять определенный цвет. Просто хотел, чтобы он был прозрачным; но добавление цвета withe, как я видел, работает просто отлично. Это хороший трюк. Спасибо. - person Camryn; 26.10.2015