background-position百分比原理详解


Posted in HTML / CSS onMay 08, 2021

今天帮别人调代码时,看到一个样式:

background-position: 50% 0;
background-size: 100% auto;

对background-size:100% auto,意思是背景图片宽度为元素宽度*100%,高度等比缩放。

对background-position很自然的以为百分比是根据父元素宽度计算的,但background-position真的不是,它有一套自己的原理。下面详细介绍。

一、等价写法

在看各类教程时有以下等价写法:

  • top left, left top 等价于 0% 0%.
  • top, top center, center top 等价于 50% 0%.
  • right top, top right 等价于 100% 0%.
  • left, left center, center left 等价于 0% 50%.
  • center, center center 等价于 50% 50%.
  • right, right center, center right 等价于 100% 50%.
  • bottom left, left bottom 等价于 0% 100%.
  • bottom, bottom center, center bottom 等价于 50% 100%.
  • bottom right, right bottom 等价于 100% 100%.

那么为什么left,top就等价于0% 0%,right bottom等价于100% 100%呢?

二、background-position百分比计算公式

background-postion:x y;
x:{容器(container)的宽度—背景图片的宽度}*x百分比,超出的部分隐藏。
y:{容器(container)的高度—背景图片的高度}*y百分比,超出的部分隐藏。

有了这个公式,就很容易理解百分百写法了,推算一下也就很容易理解上面各类等价写法了。

三、举例

1、background-position:center center等价于background-position:50% 50%等价于background-position:?px ?px

例子中用到背景图如下【尺寸:200px*200px】:

background-position百分比原理详解

背景图在容器中居中。

<style type="text/css">
.wrap{
    width: 300px;
    height: 300px;
    border:1px solid green;
    background-image: url(img/image.png);
    background-repeat: no-repeat;
/*    background-position: 50% 50%;*/
    background-position: center center;
}
</style>
<div class="wrap">
</div>

效果都是让背景图片居中

background-position百分比原理详解

如上通过设置百分比和关键字能实现背景图居中,如果要实现通过具体值来设置图片居中该设置多少?

根据上面公式:

x=(容器的宽度-背景图宽度)*x百分比=(300px-200px)*50%=50px;

y=(容器的高度-背景图高度)*y百分比=(300px-200px)*50%=50px;

即设置background-postion:50px 50px;

测试一下:

<style type="text/css">
.wrap{
    width: 300px;
    height: 300px;
    border:1px solid green;
    background-image: url(img/image.png);
    background-repeat: no-repeat;
/*    background-position: 50% 50%;*/
/*    background-position: center center;*/
    background-position: 50px 50px;
}
</style>
<div class="wrap">
</div>

效果同样居中。

到此这篇关于background-position百分比原理详解的文章就介绍到这了,更多相关background-position 百分比内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章,希望大家以后多多支持三水点靠木!

 
HTML / CSS 相关文章推荐
详解css3 object-fit属性
Jul 27 HTML / CSS
css3背景图片透明叠加属性cross-fade简介及用法实例
Jan 08 HTML / CSS
css3实现的下拉菜单效果示例
Jan 22 HTML / CSS
CSS3实现多背景模拟动态边框的效果
Nov 08 HTML / CSS
CSS 3.0 结合video视频实现的创意开幕效果
Jun 01 HTML / CSS
html5的新玩法——语音搜索
Jan 03 HTML / CSS
HTML5之SVG 2D入门10—滤镜的定义及使用
Jan 30 HTML / CSS
推荐WEB开发者最佳HTML5和CSS3代码生成器
Nov 24 HTML / CSS
移动HTML5前端框架—MUI的使用
Dec 18 HTML / CSS
html5自定义video标签的海报与播放按钮功能
Dec 04 HTML / CSS
在HTML中引入CSS的几种方式介绍
Dec 06 HTML / CSS
使用CSS设置滚动条样式
Jan 18 HTML / CSS
不要在HTML中滥用div
css display table 自适应高度、宽度问题的解决
CSS 新特性 contain控制页面的重绘与重排问题
CSS3新特性详解(五):多列columns column-count和flex布局
css position fixed 左右双定位的实现代码
Apr 29 #HTML / CSS
css3 利用transform-origin 实现圆点分布在大圆上布局及旋转特效
CSS3实现的侧滑菜单
You might like
PHP 批量更新网页内容实现代码
2010/01/05 PHP
Fatal error: Call to undefined function curl_init()解决方法
2010/04/09 PHP
有一段有意思的代码-javascript现实多行信息
2007/08/26 Javascript
ExtJs默认的字体大小改变的几种方法(自己整理)
2013/04/18 Javascript
jquery选择器大全 全面详解jquery选择器
2014/03/06 Javascript
js生成缩略图后上传并利用canvas重绘
2014/05/15 Javascript
JavaScript strike方法入门实例(给字符串加上删除线)
2014/10/17 Javascript
CSS+JS实现点击文字弹出定时自动关闭DIV层菜单的方法
2015/05/12 Javascript
使用AmplifyJS组件配合JavaScript进行编程的指南
2015/07/28 Javascript
php利用curl获取远程图片实现方法
2015/10/26 Javascript
javascript笔记之匿名函数和闭包
2017/02/06 Javascript
浅析vue component 组件使用
2017/03/06 Javascript
react.js使用webpack搭配环境的入门教程
2017/08/14 Javascript
React Native中的RefreshContorl下拉刷新使用
2017/10/09 Javascript
基于jQuery实现定位导航位置效果
2017/11/15 jQuery
js调用设备摄像头的方法
2018/07/19 Javascript
JavaScript设计模式之观察者模式实例详解
2019/01/16 Javascript
Vue实现多页签组件
2021/01/14 Vue.js
JavaScript/TypeScript 实现并发请求控制的示例代码
2021/01/18 Javascript
[03:09]2014DOTA2国际邀请赛 Mushi前队友送上祝福
2014/07/12 DOTA
Pyramid将models.py文件的内容分布到多个文件的方法
2013/11/27 Python
Python的collections模块中的OrderedDict有序字典
2016/07/07 Python
Django基于ORM操作数据库的方法详解
2018/03/27 Python
详解Django+Uwsgi+Nginx 实现生产环境部署
2018/11/06 Python
pygame游戏之旅 如何制作游戏障碍
2018/11/20 Python
Python之指数与E记法的区别详解
2019/11/21 Python
使用html5 canvas 画时钟代码实例分享
2015/11/11 HTML / CSS
计算机专业个人简短的自我评价
2013/10/23 职场文书
我的求职计划书
2014/01/10 职场文书
运动会稿件100字
2014/02/21 职场文书
公务员培的训心得体会
2014/09/01 职场文书
员工辞职信怎么写
2015/02/27 职场文书
小学教师读书笔记
2015/07/01 职场文书
使用python向MongoDB插入时间字段的操作
2021/05/18 Python
python基础之类方法和静态方法
2021/10/24 Python
教你如何让spark sql写mysql的时候支持update操作
2022/02/15 MySQL