1
votes

Comment pourrais-je déplacer un div sous un autre div et avoir toujours le div supérieur "position: fixed"?

Je crée donc un site Web pour mon entreprise de conception Web. Je veux que le div supérieur (en-tête) reste tel quel, mais je veux que l'image ci-dessous soit en dessous de l'identifiant "head" et qu'elle fonctionne toujours comme une page Web normale.

Voici un JSFiddle au cas où vous voudriez voir le code exécuté ... Vous avez gagné; t voir les imgs bien que ... Désolé ..

J'ai déjà essayé de définir la position sur les deux choses sur "relative". Mais cela ne fonctionne pas avec l'en-tête.

<div id="header">
		<ul id="name">
			<li><a href="#">DevWeb Web Development</a></li>
		</ul>
		<ul id="nav">
			<li><a href="#">About Us</a></li>
			<li><a href="#">Contact Us</a></li>
			<li><a href="#">Gallery</a></li>
		</ul>
	</div>
	<br>
	<div class="everything">
		<div id="webInfo">
			<img src="imgs\personWebsite.png" alt="If you see this message please E-Mail the developer at oof" style="top: 50;">
		</div>
		<br>
		<br>
		<div id="missionStatement">
			<p id="ourStatement"><u>Mission Statement</u></p> 
			<p style="font-size: 0.5px;">-</p>
			<blockquote>Our goal is to bring you the best customer service and web design that will ever meet your eyes. And we strive to bring you just that. Because when it comes to the front of your business, you want the best quality with the customer support that you need to keep it running. And that's the way that DevWeb Web Development does things.</blockquote>
		</div>
		<div id="wantWebsite">
			<img src="imgs\finger.png" alt="If you see this message please E-Mail the developer at oof" style="max-width: 100%;">
			<p id="schedule"><a href="#">Schedule <strong>YOUR</strong> appointment <strong>TODAY</strong></a></p>
		</div>
	</div>
#header {
  background: white;
  color: black;
  text-align: center; 
  font-weight: bold; 
  position: fixed;
  top: 0; 
  width: 100%;
  border-bottom: 2.5px solid black;
  left: 0;
  position: relative;
}

#nav {
text-align: right;
padding: 0px 20px;
font-size: 40px;
transition: 0.2s;
font-family: "Source Sans Pro", sans-serif;
}

#name {
text-align: left;
padding: 0px 20px;
font-size: 50px;
transition: 0.2s;
font-family: "Montserrat", sans-serif;
color: black;
}

#ourStatement {
font-size: 39.06px;
}

#skyLimit {
border-bottom: 1px;
}

#everything {
position: relative;
}

li a {
color: black;
text-align: center;
padding: 0px 20px;
text-decoration: none;
}

ul {
list-style-type: none;
}

li {
display: inline;
}

a:hover {
text-decoration: underline;
}

a {
text-decoration: none;
}

#missionStatement {
text-align: center;
font-family: "Arial";
}

blockquote {
font-size: 31.25px;
border-left: 10px solid gray;
border-radius: 5px;
}

img {
max-width: 100%;
} 

#schedule {
font-family: "Arial";
font-size: 50px;
color: black;
text-align: center;
}

a:visited {
color: black;
text-decoration: none;
}
window.onscroll = function() {scrollFunction()};

function scrollFunction() {
  if (document.body.scrollTop > 50 || document.documentElement.scrollTop > 50) {
    document.getElementById("nav").style.fontSize = "30px";
    document.getElementById("name").style.fontSize = "40px";
    document.getElementById("header").style.backgroundColor = "#f2f2f2";

  } else {
    document.getElementById("nav").style.fontSize = "40px";
    document.getElementById("name").style.fontSize = "50px";
    document.getElementById("header").style.backgroundColor = "white";
  }
}


3 commentaires

Veuillez être plus clair sur ce que vous demandez.


Je souhaite que la balise d’identification "header" reste fixe et que le contenu en dessous se trouve sous la balise "header"


Je crois donc que vous avez répondu à votre propre question. Insérez la balise de fermeture

à l'endroit où vous voulez que votre #header termine tout ce qui suit sera en dehors de l'en-tête.


3 Réponses :


0
votes

Supprimez position: relative; de #header . Vous avez position: fixed; avant cela mais vous l'annulez en déclarant relative après. Vous voulez que la position soit fixe sur votre en-tête et le reste de votre positionnement de contenu par défaut. Cela fera coller l'en-tête en haut lorsque vous faites défiler tous les autres.


2 commentaires

D'après ce que j'ai rassemblé, @DevinC souhaite que le contenu sous l'en-tête soit entièrement visible, non masqué par l'en-tête fixe en haut.


Merci. Mais ce que je veux faire, c'est que tout le contenu ci-dessous ne soit pas à l'intérieur de l'en-tête. Et ce que j'entends par contenu, c'est l'img que j'ai juste en dessous de la balise "header"



0
votes

Je vous suggère de lire sur le bootstrap du tweeter et de l'utiliser: et Pour votre code actuel, essayez d'utiliser ce

 #header {
      background: white;
      color: black;
      text-align: center; 
      font-weight: bold; 
      position: fixed;
      top: 0; 
      width: 100%;
      border-bottom: 2.5px solid black;
      left: 0;
    /*  position: relative;*/
    }
.everything {
        position: relative;
        margin-top: 18%;
    }

ou Supprimer position: relative; de l'en-tête css

.everything {
    position: relative;
    margin-top: 18%;
}

et au lieu de #everything , cela devrait être .everything comme classe

Utilisez ceci

#header {
  background: white;
  color: black;
  text-align: center; 
  font-weight: bold; 
  position: fixed;
  top: 0; 
  width: 100%;
  border-bottom: 2.5px solid black;
  left: 0;
/*  position: relative;*/
}

donc votre css ensemble sera

function scrollFunction() {
  if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) {
    document.getElementById("nav").style.fontSize = "30px";
    document.getElementById("name").style.fontSize = "40px";
    document.getElementById("header").style.backgroundColor = "#f2f2f2";
    document.getElementById("header").style.position = "fixed";
    document.getElementsByClassName("everything")[0].style.marginTop = "100px"; 

  } else if( document.body.scrollTop < 20 || document.documentElement.scrollTop < 20 ) {

    document.getElementById("nav").style.fontSize = "40px";
    document.getElementById("name").style.fontSize = "50px";
    document.getElementById("header").style.backgroundColor = "white";
    document.getElementById("header").style.position = "relative";
    document.getElementsByClassName("everything")[0].style.marginTop = "0px"; 

  }
}


3 commentaires

@DevinC. Ce n’est pas une solution pleinement fonctionnelle. Voir la sortie ici: jsfiddle.net/wa0vtsn3/2 Assurez-vous de tester cela en plein écran.


leme essayez à nouveau :)


essayez de faire (document.body.scrollTop> 20 || document.documentElement.scrollTop> 20) et (document.body.scrollTop <20 || document.documentElement.scrollTop <20) n'oubliez pas de faire des changements dans css ie: # partie d'en-tête et #everything en .everything



0
votes

Vous pouvez y parvenir en définissant l'attribut margin-top de #everything à la hauteur de .header . Étant donné que la hauteur de l'en-tête varie, vous pouvez obtenir la hauteur et définir margin-top en conséquence par programme comme ceci:

var height = document.getElementById('header').getBoundingClientRect().height;
document.getElementsByClassName('everything')[0].setAttribute("style", "margin-top:"+height+"px"); 

Voici une démonstration fonctionnelle: https://jsfiddle.net/wa0vtsn3/1/


0 commentaires