1. Le problème de couleur de la barre de défilement en xhtml
Dans le html original, on peut définir la barre de défilement de la page entière comme ceci :
corps{
scrollbar -3dlight-color:#D4D0C8; /*- Extérieur gauche-*/
scrollbar-highlight-color:#fff; -face-color:#E4E4E4; /*-face-*/
scrollbar-arrow-color:#666; /*-arrow-*/
scrollbar-shadow-color:# 808080; / *- Deuxième en partant de la droite-*/
scrollbar-darkshadow-color:#D7DCE0; /*- Premier en partant de la droite-*/
scrollbar-base-color:# D7DCE0; /*- Couleur de base- */
scrollbar-track-color:#;/*- Slider-*/
}
Mais le même code ne peut pas être utilisé sous xhtml Cela a fonctionné. Je crois que de nombreux bons amis ont rencontré le même problème.
Alors, comment puis-je appliquer le style de barre de défilement sous xhtml ? Regardez le code suivant :
html{
scrollbar-3dlight-color:#D4D0C8; /*- le plus à gauche-*/
scrollbar-highlight-color:# fff ; /*- Deuxième à partir de la gauche-*/
scrollbar-face-color:#E4E4E4; /*- Face-*/
scrollbar-arrow-color:#666; - Flèche -*/
scrollbar-shadow-color:#808080; /*- Deuxième en partant de la droite-*/
scrollbar-darkshadow-color:#D7DCE0; la droite-*/
scrollbar-base-color:#D7DCE0; /*- base color-*/
scrollbar-track-color:#;/*- slide-*/
}
La seule différence entre ce code et le paragraphe précédent est que parmi les éléments définis par css, l'un est body et l'autre est html. Testons-le à nouveau et changeons le « corps » de la page html en « html » pour le tester et constater que l'effet peut toujours être obtenu. Alors pourquoi ?
Jetons un coup d'œil à l'image ci-dessous :
Il s'agit de la structure arborescente dom la plus basique du HTML.
Regardons les définitions de html et xhtml :
HTML (Hyper Text Markup Language, HyperText Markup Language), le langage de balisage hypertexte est largement utilisé sur Internet. Ci-dessus . HTML décrit comment la base de texte est rendue et comment les hyperliens se connectent à d'autres pages.
XHTML (Extensible Hypertext Markup Language, Extensible Hypertext Markup Language) est un langage de balisage dont l'expression est similaire au HTML, mais la syntaxe est plus stricte. En termes de relation d'héritage, HTML est une application basée sur SGML et est très flexible, tandis que XHTML est basé sur XML, qui est un sous-ensemble de SGML. XHTML 1.0 est devenu une recommandation du W3C le 26 janvier 2000.
Littéralement, xhtml a un x de plus que HTML, donc ce x est en fait du XML. Pourquoi devons-nous y ajouter du XML ? En fait, la raison la plus fondamentale est de rendre le HTML plus structuré et standardisé (car le HTML est vraiment mauvais).
OK, revenons en arrière et regardons l'arborescence ci-dessus. Ce que nous définissons en HTML est le corps. Parce que le HTML n'est pas très standard, cela peut prendre effet, mais en HTML, cela ne fonctionnera pas. cette image. Évidemment, la balise body elle-même n'est pas l'élément racine, seul le HTML est l'élément racine, et la barre de défilement de la page appartient également à l'élément racine, c'est pourquoi notre définition du corps n'a aucun effet, car quoi que nous définissons n'est qu'un sous-élément. OK, on connaît le principe, faisons une expérience Si on change la définition de "body" ou "xhtml" en "*" :
*{
scrollbar-3dlight-color : #D4D0C8; /*- Extérieur gauche-*/
scrollbar-highlight-color:#fff; /*- Deuxième à partir de la gauche-*/
scrollbar-face-color:#E4E4E4; /*- Visage-*/
scrollbar-arrow-color:#666; /*- Arrow-*/
scrollbar-shadow-color:#808080; -*/
scrollbar-darkshadow-color:#D7DCE0; /*- celui de droite-*/
scrollbar-base-color:#D7DCE0; 🎜>
scrollbar-track-color:#;/*- Slider-*/
}
est transmis à la fois en html et en xhtml, car * consiste à définir n'importe quelle balise sur le page, bien sûr, elle inclut également la balise " html ".
(ps : en fait, ce n'est pas tant la différence entre html et xhtml que la différence entre l'existence ou non d'un doctype de transition XHTML 1.0, mais si vous supprimez le doctype de transition XHTML 1.0 de la page, alors cette page n'aura pas de doctype, le mode d'affichage par défaut est html4.01, mais vous devez changer le doctype de transition XHTML 1.0 en HTML 4.01. Définir le corps sur la même page n'aura aucun effet, bien que le standard de. cette page est html 4.01)
2 , le problème des barres de défilement horizontales sur les pages frame sous xhtml
Lorsque vous utilisez IE6 pour parcourir des pages xhtml avec des frames, les barres de défilement horizontales et verticales apparaîtront ensemble par défaut. Il s'agit d'un bug dans IE6, et c'est dans Firefox Normalement, la raison est due à un défaut dans son interprétation du doctype transitionnel XHTML 1.0.
Il existe généralement 3 solutions à ce bug,
Méthode 1 :
Code :
html { overflow-y: scroll }
Principe : Forcer l'affichage de la barre de défilement verticale d'IE et ignorer la barre de défilement horizontale.
Avantages : Résout complètement ce problème, vous permettant de conserver le doctype XHTML complet.
Inconvénients : Les barres de défilement verticales apparaissent même lorsque la page ne nécessite pas de barres de défilement verticales.
Méthode 2 :
Code :
html { overflow-x: Hidden; overflow-y: auto; >
Principe : masquer le défilement horizontal et le défilement vertical est adaptatif en fonction du contenu.
Avantages : Résolvez ce problème visuellement. La barre de défilement verticale n’est pas forcée d’apparaître lorsque cela n’est pas nécessaire.
Inconvénients : Il masque uniquement la barre de défilement horizontale. Si la page a vraiment besoin de la barre de défilement horizontale, le contenu en dehors de l'écran ne sera pas visible car l'utilisateur ne peut pas faire défiler horizontalement.
Méthode 3 :
Code :
body { margin-right : -15px ; margin-bottom : -15px >
Principe : Cela Ajoutez une valeur négative à la marge horizontalement et verticalement. Une fois que IE aura ajouté cette valeur exacte, cela supprimera l'illusion du besoin de barres de défilement.
Avantages : Ce problème est résolu visuellement, et le défilement vertical est adaptatif en fonction du contenu.
Inconvénient : La marge de 15px étant "créée artificiellement", la zone d'écran remplie ne peut pas être utilisée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!