问题
I am looking for a way to effectively achieve negative padding in CSS.
The Problem
I have an h1 element on my web page that currently has the following code associated with it:
h1 {
background-color: #375E97;
color: #FFFFFF;
font-size: 50px;
font-family: 'Righteous', cursive;
text-transform: uppercase;
text-align: center;
padding: 0;
margin: 0 auto;
height: 49px;
}
<head>
<link href="https://fonts.googleapis.com/css?family=Righteous|Roboto:400,700,400i" rel="stylesheet">
</head>
<body>
<h1>Lorem Ipsun Al</h1>
</body>
You can see that since I have added: height: 49px;, the text looks as if it is flowing into the rest of the page. I want to achieve this look, but also for the top of the text, not just the bottom.
What I Have Tried
I have tried:
- Setting both
paddingandmarginto0for theh1element. - Playing with various values for
vertical-align. - Setting
heightto many different values. - Setting all the
h1's parent elements'paddingandmarginto0.
I believe that the problem I am facing is that the top of the font I am using (and most fonts) has some space. This is why I want to be able to achieve a negative padding, to move the text up on the screen without moving the content box.
回答1:
It completly depends on the font you use, but in your particular case height: 34pxand line-height: 34px; do what you want:
h1 {
background-color: #375E97;
color: #FFFFFF;
font-size: 50px;
font-family: 'Righteous', cursive;
text-transform: uppercase;
text-align: center;
padding: 0px;
margin: 0 auto;
height: 34px;
line-height: 34px;
}
<!DOCTYPE html>
<html>
<head>
<link href="https://fonts.googleapis.com/css?family=Righteous|Roboto:400,700,400i" rel="stylesheet">
</head>
<body>
<h1>Lorem Ipsun Al</h1>
</body>
</html>
回答2:
The one thing you didn't try is adjusting the line-height.
10.8 Line height calculations: the line-height and vertical-align properties
On a block container element whose content is composed of inline-level elements,
line-heightspecifies the minimal height of line boxes within the element.
h1 {
background-color: #375E97;
color: #FFFFFF;
font-size: 50px;
font-family: 'Righteous', cursive;
text-transform: uppercase;
text-align: center;
padding: 0;
margin: 0 auto;
line-height: .6;
}
<h1>Lorem Ipsun Al</h1>
回答3:
Use a negative margin on the inner content to achieve the same thing as negative padding would.
来源:https://stackoverflow.com/questions/39541375/how-do-i-achieve-negative-padding-in-css