Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

Quick question about vertical-align: inherit

Posted on 2004-04-10
4
Medium Priority
?
606 Views
Last Modified: 2012-05-04
I have the following in the body of a page:

<div id="centerpage">
      <div id="header">
      </div>
      <div id="subhcontainer">
            <div id="stripefill"></div>
            <div id="merge"></div>
            <div id="login">
            <div class="centerwhite">Username: &nbsp;<input class="tb" type="text" name="uname" size="10" maxlength="15"> &nbsp; &nbsp; Password:  &nbsp;<input class="tb" type="password" name="pass" size="10" maxlength="15">&nbsp;&nbsp; <input class="buttons" type="submit" value="Login"></div>
            </div>
      </div>


I'm going to post the relevant portion of my stylesheet below, but basically I'm wondering why my text boxes aren't centered vertically withing the #login div.   I can get them to center by setting their vertical-align property to middle, but I'm trying to get it to work by using vertical-align: inherit;  I've tried setting both the #centerwhite and #login vertical-align properties to middle in hopes that the text boxes would center, but for some reason the inherit isn't working and instead they are aligned with the top.  Here is the relevant CSS:


html, body{
      background-image: url("../images/bg.gif");
      text-align: center;
}
div#centerpage
{
margin-left: auto;
margin-right: auto;
width: 750;
}

div#header{
border-top: 1px solid;
border-left: 1px solid;
border-right: 1px solid;
/*ie 5x hack 750 +  2*1*/
width: 752px;
height: 77px;
background-image: url("../images/top.jpg");
voice-family: "\"}\"";
voice-family:inherit;
width: 750px;
height: 75px;
}

html>body div#header {
width: 750px;
height: 75px;
}

div#subhcontainer
{
position: relative;
width: 752px;
height: 27px;
border-bottom: 1px solid;
border-left: 1px solid;
border-right: 1px solid;
voice-family: "\"}\"";
voice-family: inherit;
width: 750px;
height: 26px;
}


div#stripefill
{
position: absolute;
left: 0px;
background-image: url("../images/pint.gif");
vertical-align: top;

width: 370px;
height: 26px;
}


div#merge
{
position: absolute;
left: 370px;
background-image: url("../images/merge.gif");
width: 50px;
height: 26px;
}

div#login
{
position: absolute;
left: 420px;
vertical-align: middle;
background-color:#000000;
width: 330px;
height: 26px;
}

.centerwhite{
font-family: Arial, sans-serif;
color: #FFFFFF;
font-size: 10px;
vertical-align: middle;
}

input.tb{
vertical-align:inherit;

  font-family: Verdana, Arial, Helvetica, sans-serif;
 font-size: 10px;
      
      background-color: #EDEDED
}


input.buttons {
 font-family: Verdana, Arial, Helvetica, sans-serif;
 font-size: 10px;
 background-color: #333333;
 height:auto;
 top: 5px;
 bottom:5px;
 color: #FFFFFF;
 margin-right: 6px;
}


0
Comment
Question by:mears11
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
4 Comments
 
LVL 17

Accepted Solution

by:
dorward earned 500 total points
ID: 10800535
The vertical align property only applies to elements with display: inline (in which case it alters the position of the content on the line) and display: table-cell. Div elements have a default display property of display: block, so vertical align does not apply.
0
 
LVL 31

Expert Comment

by:seanpowell
ID: 10800702
Given that you have a known height for the login div, explicitly setting the margin would seem to be the easiest route to go.

Also, you need to set a unit on your centerpage width for Mozilla. The following assumes standards mode rendering:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title></title>
<style type="text/css">

html, body
{
background-image: url("../images/bg.gif");
text-align: center;
}

div#centerpage
{
margin: 0 auto;
width: 750px;
}

div#header
{
border-top: 1px solid;
border-left: 1px solid;
border-right: 1px solid;
/*ie 5x hack 750 +  2*1*/
width: 752px;
height: 77px;
background-image: url("../images/top.jpg");
voice-family: "\"}\"";
voice-family:inherit;
width: 750px;
height: 75px;
}

html>body div#header
{
width: 750px;
height: 75px;
}

div#subhcontainer
{
position: relative;
width: 752px;
height: 27px;
border-bottom: 1px solid;
border-left: 1px solid;
border-right: 1px solid;
voice-family: "\"}\"";
voice-family: inherit;
width: 750px;
height: 26px;
}

div#stripefill
{
position: absolute;
left: 0;
background-image: url("../images/pint.gif");
width: 370px;
height: 26px;
}

div#merge
{
position: absolute;
left: 370px;
background-image: url("../images/merge.gif");
width: 50px;
height: 26px;
}

div#login
{
position: absolute;
left: 420px;
background-color:#000;
width: 330px;
height: 26px;
}

.centerwhite
{
font-family: Arial, sans-serif;
color: #FFF;
font-size: 10px;
margin:3px 0 0 0;
}

input.tb
{
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 10px;
background-color: #EDEDED;
margin:0 10px 0 3px;
}

input.buttons
{
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 10px;
background-color: #333333;
line-height:11px;
color: #FFFFFF;
padding:0;
}

</style>
</head>
<body>

<div id="centerpage">
      <div id="header"></div>
      <div id="subhcontainer">
            <div id="stripefill"></div>
            <div id="merge"></div>
            <div id="login">
                  <div class="centerwhite">
                  Username: <input class="tb" type="text" name="uname" size="10" maxlength="15">
                  Password: <input class="tb" type="password" name="pass" size="10" maxlength="15">
                  <input class="buttons" type="submit" value="Login">
                  </div>
            </div>
      </div>
</div>
</body>
</html>

0
 
LVL 53

Expert Comment

by:COBOLdinosaur
ID: 10800931
Some good and correct information here, there is just one thing that needs to be added.  Even if it was correctly applied it would only work for a small percentage of users because inherit is not support for vertical-align by IE.

Cd&
0
 

Author Comment

by:mears11
ID: 10803171
Thanks for the clarrification.  Also, thanks to seanpowell for finding that missing "px" and to COBOLdinosaur for the extra tip.
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This is a how to build your own CSS3 slideshow and when I say CSS3 I mean just CSS with no javascript in sight! There a few examples online of how to do this but most just show you an example without any explanation, others make it more complicat…
SASS allows you to treat your CSS code in a more OOP way. Let's have a look on how you can structure your code in order for it to be easily maintained and reused.
In this tutorial viewers will learn how to style elements, such a divs, with a "drop shadow" effect using the CSS box-shadow property Start with a normal styled element, such as a div.: In the element's style, type the box shadow property: "box-shad…
In this tutorial viewers will learn how to style a decorative dropcap for the first letter in a paragraph using CSS. In CSS, create a new paragraph class by typing "p.fancy": Then, to style only the first letter of the first sentence, include the ps…
Suggested Courses

609 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question