转换:translateY(-50%) 在 Safari 中不起作用
transform: translateY(-50%) not working in Safari
在 Chrome 中,我的代码工作正常,并且问题完全垂直居中,但在 Safari 中并非如此。这是我的一些代码。
@charset "UTF-8";
/* CSS Document */
body {
font-family: "Poiret One"
}
.myelement {
top: 50%;
-ms-transform: translateY(-50%);
-webkit-transform: translateY(-50%);
-moz-transform: translateY(-50%);
-o-transform: translateY(-50%);
transform: translateY(-50%);
opacity: .80;
width: 30%;
height: auto;
z-index: 100;
position: relative;
}
.fullscreen-bg {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
overflow: hidden;
z-index: -100;
}
*, *:before, *:after {
-moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box;
}
html, body {
height: 100%;
}
body {
margin: 0;
}
.cover-thing {
width: 100%;
height: 100%;
text-align: center;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<title>something.com</title>
<!-- Bootstrap Core CSS -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<!-- Bootstrap Core JavaScript >
<script src="js/bootstrap.min.js"></script-->
<!--Custom JavaScript-->
<script src="js/mjberger.js"></script>
<!--JQuery-->
<script src="js/jquery.min.js"></script>
<!--<script>window.jQuery || document.write('<script src="js/jquery.min.js"><\/script>')</script>-->
<!--<script type="text/javascript" src="js/jkit/jquery-1.9.1.min.js"></script>-->
<script type="text/javascript" src="js/jkit/jquery.jkit.1.2.16.min.js"></script>
<!---->
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<link href="https://fonts.googleapis.com/css?family=Poiret+One|Inknut+Antiqua" rel="stylesheet">
<link rel="icon" href="mtab.png">
</head>
<body>
<section id="myDiv" class="cover-thing first" style="overflow: hidden;">
<div class="fullscreen-bg" style="z-index: 100; position: absolute; padding: 0px; justify-content:center;">
<img src="https://www.codeproject.com/KB/GDI-plus/ImageProcessing2/flip.jpg" class="myelement"></img>
</div>
</section>
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="js/bootstrap.min.js"></script>
</body>
</html>
如您所见,它完美居中,但在 Safari 中并非如此,图像出现在屏幕顶部,只能看到一半。我尝试使用 -webkit-
但这也不起作用。我认为问题主要出在 transform: translateY(-50%);
.
"negative translate" 技巧适用于绝对定位元素。使用 position: absolute
后,您可以使用相同的 transform
.
将 x 轴和 y 轴居中
像这样更改 .myelement
样式以解决问题:
.myelement {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
opacity: .80;
width: 30%;
z-index: 100;
}
在 Chrome 中,我的代码工作正常,并且问题完全垂直居中,但在 Safari 中并非如此。这是我的一些代码。
@charset "UTF-8";
/* CSS Document */
body {
font-family: "Poiret One"
}
.myelement {
top: 50%;
-ms-transform: translateY(-50%);
-webkit-transform: translateY(-50%);
-moz-transform: translateY(-50%);
-o-transform: translateY(-50%);
transform: translateY(-50%);
opacity: .80;
width: 30%;
height: auto;
z-index: 100;
position: relative;
}
.fullscreen-bg {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
overflow: hidden;
z-index: -100;
}
*, *:before, *:after {
-moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box;
}
html, body {
height: 100%;
}
body {
margin: 0;
}
.cover-thing {
width: 100%;
height: 100%;
text-align: center;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<title>something.com</title>
<!-- Bootstrap Core CSS -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<!-- Bootstrap Core JavaScript >
<script src="js/bootstrap.min.js"></script-->
<!--Custom JavaScript-->
<script src="js/mjberger.js"></script>
<!--JQuery-->
<script src="js/jquery.min.js"></script>
<!--<script>window.jQuery || document.write('<script src="js/jquery.min.js"><\/script>')</script>-->
<!--<script type="text/javascript" src="js/jkit/jquery-1.9.1.min.js"></script>-->
<script type="text/javascript" src="js/jkit/jquery.jkit.1.2.16.min.js"></script>
<!---->
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<link href="https://fonts.googleapis.com/css?family=Poiret+One|Inknut+Antiqua" rel="stylesheet">
<link rel="icon" href="mtab.png">
</head>
<body>
<section id="myDiv" class="cover-thing first" style="overflow: hidden;">
<div class="fullscreen-bg" style="z-index: 100; position: absolute; padding: 0px; justify-content:center;">
<img src="https://www.codeproject.com/KB/GDI-plus/ImageProcessing2/flip.jpg" class="myelement"></img>
</div>
</section>
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="js/bootstrap.min.js"></script>
</body>
</html>
如您所见,它完美居中,但在 Safari 中并非如此,图像出现在屏幕顶部,只能看到一半。我尝试使用 -webkit-
但这也不起作用。我认为问题主要出在 transform: translateY(-50%);
.
"negative translate" 技巧适用于绝对定位元素。使用 position: absolute
后,您可以使用相同的 transform
.
像这样更改 .myelement
样式以解决问题:
.myelement {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
opacity: .80;
width: 30%;
z-index: 100;
}