Есть ли способ центрировать элемент в середине макета

#html #css

#HTML #css

Вопрос:

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

 * {
    margin: 0;
    padding: 0;
}

html, body {
    width:100%;
    height:100%;
    margin:0;
}

.layoutPage {
    min-height: 95%;
}

/***********************************
 ************Header*****************
 ***********************************/

.headerImage {
    background: blue;
    padding: 1.75em;
    margin: 0;
    padding: 0;
    background-color: blue;
    height: 3.5em; /*4em*/
}

/***********************************
 ***************Body****************
 ***********************************/

.bodyContainer {
    overflow: auto;
    padding-bottom: 1em;
    font-family: Verdana;
    font-size: 12px; /*12px*/
}

.appRoundedShadow {
display: inline-block;
height: auto  
 <!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>@ViewBag.Title</title>
</head>
<body>
    <div class="layoutPage">
        <div class="headerImage">            
        </div>
        <br />
        <div class="bodyContainer">
            <div class="appRoundedShadow">
		<div class="container">
			<div style="width: 450px; margin: 0 auto; border: 1px solid;">

                    <div style="margin: 2px; border-bottom-style: solid; border-bottom-width: thin; background-color: blue; text-align: center;">
                        <span style="font-weight: bold; font-size: 19px; color: #fff">Report</span>
                    </div>
                    <div style="margin: 1em">
                        <span style=""><input type="text" name="year"><br></span>

                        <input type="submit" id="executeReport" name="SubmitBtn" class="submitButton" value="Execute Report"/>
                    </div>
                    
                    
                    <div style="margin-left: 1em">
                        <p>It may take 2 or more minutes to complete your request.<br/></p>
                    </div>

                </div>
		</div>
	</div>
        </div>
    </div>
    <div class="footer">
        <hr />
        <span class="footerText">Copyright © </span>
    </div>
</body>
</html>  

Я хочу центрировать весь appRoundedShadow div

Комментарии:

1. Немного неясно, какой элемент вы пытаетесь центрировать. Это весь .appRoundedShadow div или какой-то другой компонент? Иногда вертикальное центрирование является сложной задачей. Я обнаружил, что flexbox полезен в аналогичных обстоятельствах.

2. весь раздел appRoundedShadow

Ответ №1:

Здесь вам нужно сделать пару вещей. Во-первых, удалите тот, <br> который в данный момент находится под .headerImage div, потому что это добавляет дополнительное пространство, из-за которого .headerImage кажется, что он не центрирован по вертикали.

Затем добавьте следующее для .appRoundedShadow :

 .appRoundedShadow {
    display: block;
    height: auto;
    margin: auto;
}
  

Затем сделайте отступы согласованными вокруг .bodyContainer (замените это на padding-bottom на padding ).

Наконец, удалите min-height на .layoutPage . Вместо этого пусть содержимое div определяет высоту.

 * {
    margin: 0;
    padding: 0;
}

html, body {
    width:100%;
    height:100%;
    margin:0;
}

/***********************************
 ************Header*****************
 ***********************************/

.headerImage {
    background: blue;
    padding: 1.75em;
    margin: 0;
    padding: 0;
    background-color: blue;
    height: 3.5em; /*4em*/
}

/***********************************
 ***************Body****************
 ***********************************/

.bodyContainer {
    overflow: auto;
    padding: 1em;
    font-family: Verdana;
    font-size: 12px; /*12px*/
    position: relative;
}

.appRoundedShadow {
    display: block;
    height: auto;
    margin: auto;
}  
 <!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>@ViewBag.Title</title>
</head>
<body>
    <div class="layoutPage">
        <div class="headerImage">            
        </div>
        <div class="bodyContainer">
            <div class="appRoundedShadow">
		<div class="container">
			<div style="width: 450px; margin: 0 auto; border: 1px solid;">

                    <div style="margin: 2px; border-bottom-style: solid; border-bottom-width: thin; background-color: blue; text-align: center;">
                        <span style="font-weight: bold; font-size: 19px; color: #fff">Report</span>
                    </div>
                    <div style="margin: 1em">
                        <span style=""><input type="text" name="year"><br></span>

                        <input type="submit" id="executeReport" name="SubmitBtn" class="submitButton" value="Execute Report"/>
                    </div>
                    
                    
                    <div style="margin-left: 1em">
                        <p>It may take 2 or more minutes to complete your request.<br/></p>
                    </div>

                </div>
		</div>
	</div>
        </div>
    </div>
    <div class="footer">
        <hr />
        <span class="footerText">Copyright © </span>
    </div>
</body>
</html>  

Ответ №2:

Для центрирования вашего отчета добавьте этот стиль…

 .bodyContainer {
    text-align: center;
}
  

Комментарии:

1. Извините, я должен был быть более конкретным. Как насчет центрирования его не только по горизонтали, но и по вертикали?

Ответ №3:

Вы можете указать элементу, который хотите центрировать, ‘дисплей: блок’ и ‘поле: авто’

 * {
    margin: 0;
    padding: 0;
}

html, body {
    width:100%;
    height:100%;
    margin:0;
}

.layoutPage {
    min-height: 95%;
}

/***********************************
 ************Header*****************
 ***********************************/

.headerImage {
    background: blue;
    padding: 1.75em;
    margin: 0;
    padding: 0;
    background-color: blue;
    height: 3.5em; /*4em*/
}

/***********************************
 ***************Body****************
 ***********************************/

.bodyContainer {
    overflow: auto;
    padding-bottom: 1em;
    font-family: Verdana;
    font-size: 12px; /*12px*/
}

.appRoundedShadow {
  display: block;
  height: auto;
  margin:auto;
}  
 <!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>@ViewBag.Title</title>
</head>
<body>
    <div class="layoutPage">
        <div class="headerImage">            
        </div>
        <br />
        <div class="bodyContainer">
            <div class="appRoundedShadow">
		<div class="container">
			<div style="width: 450px; margin: 0 auto; border: 1px solid;">

                    <div style="margin: 2px; border-bottom-style: solid; border-bottom-width: thin; background-color: blue; text-align: center;">
                        <span style="font-weight: bold; font-size: 19px; color: #fff">Report</span>
                    </div>
                    <div style="margin: 1em">
                        <span style=""><input type="text" name="year"><br></span>

                        <input type="submit" id="executeReport" name="SubmitBtn" class="submitButton" value="Execute Report"/>
                    </div>
                    
                    
                    <div style="margin-left: 1em">
                        <p>It may take 2 or more minutes to complete your request.<br/></p>
                    </div>

                </div>
		</div>
	</div>
        </div>
    </div>
    <div class="footer">
        <hr />
        <span class="footerText">Copyright © </span>
    </div>
</body>
</html>  

Комментарии:

1. Это просто центрирует его по горизонтали, а не по вертикали. Он также удалил мою округлую тень.

2. Вы должны быть мне более конкретными с тем, чего именно вы хотите достичь. Возможно, это поможет вам достичь желаемого howtocenterincss.com 🙂

Ответ №4:

display: inline-block Отключите .appRoundedShadow , и все готово.

Комментарии:

1. Кажется, что он центрируется горизонтально, но растягивает внешний div на ширину экрана.