Странное различие в абсолютном позиционировании между тегами figure и div - PullRequest
0 голосов
/ 17 октября 2019

Я применил некоторые правила CSS для практики. Хорошо, но у меня проблемы с процентным отклонением абсолютного позиционного элемента left:5%. Я заметил, что когда я использую тег figure, он не работает должным образом, вместо этого он работает с элементом div. Чтобы понять проблему, вы должны изменить размер, чтобы уменьшить страницу. Отклонение от левой стороны области просмотра отличается между двумя версиями. Я хотел бы понять, почему и как решить проблему (в версии рисунка). Я разместил код и jsfiddle для обеих версий.

<html lang="it">

<head>
 <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
 <!--  <meta name="viewport" content="width=device-width, initial-scale=1.0"> Non si mette perchè non ho istruzioni reponsive precise come media query-->
<meta name="description" content="Sito con intestazione con sfondo. Esercizio si rifa al libro css master, esercizio finisched-example.html del capitolo 5">
<meta charset="UTF-8">
<title>Cat Page</title>

<style type="text/css">
  body {
    padding: 0;
    margin: 0;
    font-family: "Helvetica Neue", Arial, sans-serif;
  }

  .sfondo-intro {
    position: relative;
    /*margin:0; servirebbe per h1 che ha un margine di default,non per header*/
    height: 600px;
    /*perche senza contenuto h1 non visualizza lo sfondo*/
    background-image: url(https://imagizer.imageshack.com/img923/4457/MeXAJj.jpg);
    background-position: 50% 30%;
    /*per mantenere il gatto centrato quando ridimensiono la finestra*/
    background-size: cover;


  }

  .profile-box {
    width: 160px;
    background-color: #FFF;
    position: absolute;
    left: 5%;
    bottom: -60px;
    -webkit-border-radius: .5em;
    border-radius: .5em;
    padding: .5em;
  }

  .profile-box img {
    max-width: 100%;
    /*max-width a differenza di width fa si che l'immagine sia larga al massimo quanto è larga l immagine. Prova a mettere width:400px ad esempio in .profile-box per vedere che succede (l immagine non si espande fino a 400px)*/
    height: auto;
    /*Altezza settata in modo da continuare a rispettare l aspect ratio dell immagine*/

  }

  .didascalia {
    text-align: center;
    font-size: 1.2em;
    color: #555;
    font-weight: 600;
  }

</style>

 </head>



  <body>

<header class="sfondo-intro" role="banner">
  <div class="profile-box">
    <img src="https://imagizer.imageshack.com/img924/606/oMPbxW.jpg" alt="Charles The Cat" />
    <figcaption class="didascalia">@CharlesTheCat</figcaption>
  </div>

  </header>
  </body>

</html>

Код с div

А здесь есть другая версия с элементом figure вместо элемента div

  <!DOCTYPE html>

  <html lang="it">

 <head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
<!--  <meta name="viewport" content="width=device-width, initial-scale=1.0"> Non si mette perchè non ho istruzioni reponsive precise come media query-->
<meta name="description" content="Sito con intestazione con sfondo. Esercizio si rifa al libro css master, esercizio finisched-example.html del capitolo 5">
<meta charset="UTF-8">
<title>Cat Page</title>

    <style type="text/css">
    body {
    padding: 0;
    margin: 0;
    font-family: "Helvetica Neue", Arial, sans-serif;
  }

  .sfondo-intro {
    position: relative;
    /*margin:0; servirebbe per h1 che ha un margine di default,non per header*/
    height: 600px;
    /*perche senza contenuto h1 non visualizza lo sfondo*/
    background-image: url(https://imagizer.imageshack.com/img923/4457/MeXAJj.jpg);
    background-position: 50% 30%;
    /*per mantenere il gatto centrato quando ridimensiono la finestra*/
    background-size: cover;


  }

  .profile-box {
    width: 160px;
    background-color: #FFF;
    position: absolute;
    left: 5%;
    bottom: -60px;
    -webkit-border-radius: .5em;
    border-radius: .5em;
    padding: .5em;
  }

  .profile-box img {
    max-width: 100%;
    /*max-width a differenza di width fa si che l'immagine sia larga al massimo quanto è larga l immagine. Prova a mettere width:400px ad esempio in .profile-box per vedere che succede (l immagine non si espande fino a 400px)*/
    height: auto;
    /*Altezza settata in modo da continuare a rispettare l aspect ratio dell immagine*/

  }

  .didascalia {
    text-align: center;
    font-size: 1.2em;
    color: #555;
    font-weight: 600;
  }

   </style>

 </head>



<body>

<header class="sfondo-intro" role="banner">
  <figure class="profile-box">
    <img src="https://imagizer.imageshack.com/img924/606/oMPbxW.jpg" alt="Charles The Cat" />
    <figcaption class="didascalia">@CharlesTheCat</figcaption>
  </figure>

</header>
</body>

</html>

Второй вариант с рисунком

1 Ответ

1 голос
/ 17 октября 2019

Некоторые теги поставляются со стилем по умолчанию от use-agent, а элемент figure имеет некоторые поля. Вы можете использовать инспектор, такой как консоль разработчика Google (Ctrl + I в Chrome, в Windows или Linux), чтобы проверить, какие стили применяются к элементу, и отладить такие вещи, но обычно, когда один и тот же CSS работает по-разному с разными тегами,это обычно так.

Добавление margin: 0 к вашей фигуре решит ее в этом случае.

...