老师问题在内容里请看一下谢谢

老师问题在内容里请看一下谢谢

/*老师请问下为什么鼠标移动设置的背景图片起点是外边框,但是只有右边边框有背景下面没有?并且我把hover代码全部去掉只设置了div普通效果的background-clip:border-box之后也只有右边框有背景图片,左上下都没有,这个是为什么啊,我怎么想都想不明白,还以为是代码本身有问题。。。*/

<!DOCTYPE html>

<html>

    <head>

        <meta charset="UTF-8">

        <title>background-origin</title>

        <style type="text/css">

            div{

                width:600px;

                height:300px;

                border:10px rgba(123,45,67,0.5) solid;

                padding:10px;background:url("http://img1.sycdn.imooc.com/climg//582c342b0001fd6507000210.jpg") no-repeat;

                background-clip:padding-box;background-size:cover;}

            div:hover{

                background:url(

            "http://img1.sycdn.imooc.com/climg//582c34220001091605000150.jpg") 

            no-repeat 10px 10px;

            background-clip:border-box;

            background-origin:content-box;

            background-size:cover;}

        </style>

    </head>

    <body>

        <div></div>

    </body>

</html>


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,关于同学的问题回答如下:

1、先看不添加hover的效果:

http://img1.sycdn.imooc.com//climg/5f0936180914a8b509990327.jpg

效果如下:

http://img1.sycdn.imooc.com//climg/5f093625091f552908920404.jpg

左边框和上边框没有背景图的原因是background-origin是padding-box,所以是从边框内显示:

http://img1.sycdn.imooc.com//climg/5f09367109e7079306350559.jpg

如果将其改为border-box,就可以覆盖四个边了:

http://img1.sycdn.imooc.com//climg/5f09369509829eca08790348.jpg

http://img1.sycdn.imooc.com//climg/5f0936b30972052606950360.jpg

2、加上hover效果以后,可以将背景图片的大小改的大一点:

http://img1.sycdn.imooc.com//climg/5f0936f3094aee2909720205.jpg

下边框就会有背景图了:

http://img1.sycdn.imooc.com//climg/5f0937130940ae2e08320409.jpg

之所以修改背景图片的大小,是因为background-size: cover这个属性比较特殊,它不是100%那种的自适应显示,它是不会修改图片的宽高比例的。举个例子,假如父元素的宽高分别是200px、50px,背景图片的原始宽高是100px、20px,如果要把背景图片放到父元素里面,设置cover的话,按横向上走,它会放大两倍,宽变为200px,而此时的高也会乘以2,变成40px,而不是50px。所以就填充不满父元素。

这里的也是一样的,在设置了background-size: cover后,横向上超出了父容器,但是恰好高度没有。所以老师给其设置了更大的宽高,就能看出来效果了。

如果我的回答帮助了你,欢迎采纳。祝学习愉快~

  • 吹吹风泡泡茶 提问者 #1
    老师我看clip:border-box的字面解释就是从背景绘制区域,根据视频课程也是只要设置了background-clip: border-box;四个边就都能显示背景图片,但是为什么我这里设置了只显示右下2个边框背景,左和上不显示,背景图片大小我也设置的非常大了,然后我一定要设置origin=border-box,才能四个边都有背景,和视频讲解点效果不一样,origin的教辅解释是背景图像定位,现在clip:border-box的解释和实际效果不一样,想不通,烦请解惑感谢~~ <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>background-origin</title> <style type="text/css"> div { width: 600px; height: 300px; margin: 100px auto; border: 20px rgba(123, 45, 67, 0.5) solid; padding: 10px; background: url("http://img1.sycdn.imooc.com/climg//582c342b0001fd6507000210.jpg") no-repeat; background-clip: border-box; background-size: 700px 400px; } </style> </head> <body> <div></div> </body> </html>
    2020-07-11 19:00:49
  • 同学你好,在你的另一个相似提问下,已经做出了解答,快去查看下吧,http://class.imooc.com/course/qadetail/239524 祝学习愉快~
    2020-07-12 09:38:46
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师