绝对定位的练习-网易云音乐案例

如果想让某一个div居中,如果使用margin 0 auto必须添加width才能正常居中

alt 属性是一个必需的属性,它规定在图像无法显示时的替代文本

精灵图的引入图标必须增加dib才能正常显示

    .play-icon
    {
      background: url(../images/music_sprite_02.png) no-repeat 0 0px;
      width: 16px;
	  height: 17px;
      display: inline-block;
    }

将图片下面的多出来的区域去除 

.item .top img {
  /* 将图片下面的多出来的区域去除 */
  vertical-align: top;
  /* display: block; */
}

 已经写出来的初版

<!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.0">
  <title>Document</title>
  <style>
    a{
      text-decoration: none;
      color: #000;
    }
    .item
    {
      width: 140px;
      margin: 0 auto;
    }

    .music-icon
    {
      background: url(../images/music_sprite_02.png) no-repeat 0 -24px;
      width: 14px;
	    height: 11px;
      display: inline-block;
    }

    .play-icon
    {
      background: url(../images/music_sprite_02.png) no-repeat 0 0px;
      width: 16px;
	    height: 17px;
      display: inline-block;
    }

    .item .top {
    position: relative;
    }
    .item .top .cover {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;

    background: url(../images/music_sprite_01.png) no-repeat 0 0;
    width: 140px;
	  height: 141px;
    display: inline-block;
    }

    .item .info .count
    {
      color:#ccc;
      font-size: 12px;
    }
    /* 底部的样式 */
    .item .bottom {
    font-size: 14px;
    }
    .item .bottom:hover
    {
      text-decoration:underline;
    }
  </style>
</head>
<body>

  <div class="item">
    <div class="top" href="#">
      <img src="../images/music_album01.jpg" alt="音乐封面">
      <a class="cover" href="#"></a>
      <div class="info">
        <i class="music-icon"></i>
        <span class="count">62万</span>
        <i class="play-icon"></i>
      </div>
    </div>
    <a class="bottom" href="#">
      100首华语民谣,因为懂得才有共鸣
    </a>
    <i class="music-icon"></i>
    <i class="play-icon"></i>
  </div>

</body>
</html>

绝对定位基本上都没写出来

未完成

建议下面自己再写一遍,主要是定位时候的四个值+内外边距+行高居中,margin left与top

    .item .top {
    position: relative;
    }
    .item .top .cover {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;

    background: url(../images/music_sprite_01.png) no-repeat 0 0;
    width: 140px;
	height: 141px;
    display: inline-block;
    }

没写出来

 .item .top .info
    {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    height: 27px;
    padding-left: 10px;
    line-height: 27px;

    font-size: 12px;
    color: #ccc;

    background-image: url(../images/music_sprite_01.png);
    background-position: 0 -537px;
    }

没写出来



.item .top .info .icon-music {
  position: relative;
  top: 1px;
  /* display: inline-block; */
  /* width: 14px;
  height: 11px; */

  /* background-image: url(../images/music_sprite_02.png); */
  /* background-position: 0 -24px; */
}

.item .top .info .count {
  margin-left: 4px;
}

.item .top .info .icon-play {
  position: absolute;
  top: 0;
  bottom: 0;
  right: 10px;
  margin: auto 0;

  /* display: inline-block; */
  /* width: 16px;
  height: 17px; */
  /* background-image: url(../images/music_sprite_02.png); */
  /* background-position: 0 0; */
}


/* 底部的样式 */
.item .bottom {
  display: block;
  margin-top: 8px;
}

第二版

自己写第二遍,仍然是各种px有问题,定位几乎没问题

依然不足的地方,没有把共同代码抽取类,以及代码没有按层次写

一个tip是:公共用下划线,单独用连接线

我的代码

<!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.0">
  <title>Document</title>
  <style>
    a{
      text-decoration: none;
      color: #000;
    }

    .music-icon
    {
      background: url(../images/music_sprite_02.png) no-repeat 0 -24px;
      width: 14px;
	    height: 11px;
      display: inline-block;
    }

    .play-icon
    {
      background: url(../images/music_sprite_02.png) no-repeat 0 0px;
      width: 16px;
	    height: 17px;
      display: inline-block;
    }

    .item
    {
      width: 140px;
      margin: 0 auto;
    }
    .item .top img {
    /* 将图片下面的多出来的区域去除 */
    vertical-align: top;
    /* display: block; */
    }

    .item .top {
    position: relative;
    }
    .item .top .info
    {
    position: absolute;
    bottom: 0px;
    left: 0;
    right: 0;
    
    height: 27px;
    padding-left: 10px;
    line-height: 27px;

    background-image: url(../images/music_sprite_01.png);
    background-position: 0 -537px;
    }

    .item .top .cover {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;

    background: url(../images/music_sprite_01.png) no-repeat 0 0;
    width: 140px;
	  height: 141px;
    display: inline-block;
    }

    .item .info .count
    {
      color:#ccc;
      font-size: 12px;
    }
    /* 底部的样式 */
    .item .bottom {
    font-size: 14px;
    }
    .item .bottom:hover
    {
      text-decoration:underline;
    }
    .item .info .play-icon
    {
      position: absolute;
      top: 0;
      bottom: 0;
      right: 10px;
      margin: auto 0;
    }
    /* 底部的样式 */
    .item .bottom {
    display: block;
    margin-top: 8px;
    }

  </style>
</head>
<body>

  <div class="item">
    <div class="top">
      <img src="../images/music_album01.jpg" alt="音乐封面">
      <a class="cover" href="https://music.163.com/#/playlist?id=391125700"></a>
      <div class="info">
        <i class="music-icon"></i>
        <span class="count">62万</span>
        <i class="play-icon"></i>
      </div>
    </div>
    <a class="bottom" href="https://music.163.com/#/playlist?id=391125700">
      100首华语民谣,因为懂得才有共鸣
    </a>
    <i class="music-icon"></i>
    <i class="play-icon"></i>
  </div>

</body>
</html>

老师的代码

<!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.0">
  <title>Document</title>
  <style>
    /* 重置代码 */
    a {
      text-decoration: none;
      color: #333;
    }
 
    /* 公共的CSS */
    .sprite_01 {
      background-image: url(../images/music_sprite_01.png);
      display: inline-block;
    }
 
    .sprite_02 {
      background-image: url(../images/music_sprite_02.png);
      display: inline-block;
    }
 
    .sprite_02_icon_music {
      width: 14px;
      height: 11px;
      background-position: 0 -24px;
    }
 
    .sprite_02_icon_play {
      width: 16px;
      height: 17px;
      background-position: 0 0;
    }
 
    /* 布局代码 */
    .item {
      width: 140px;
      margin: 0 auto;
    }
 
    .item .top {
      position: relative;
    }
 
    .item .top img {
      /* 将图片下面的多出来的区域去除 */
      vertical-align: top;
      /* display: block; */
    }
    
    .item .top .cover {
      position: absolute;
      top: 0;
      bottom: 0;
      left: 0;
      right: 0;
 
      background-image: url(../images/music_sprite_01.png);
      background-position: 0 0;
    }
 
    .item .top .info {
      position: absolute;
      bottom: 0;
      left: 0;
      right: 0;
      height: 27px;
      padding-left: 10px;
      line-height: 27px;
 
      font-size: 12px;
      color: #ccc;
 
      background-image: url(../images/music_sprite_01.png);
      background-position: 0 -537px;
    }
 
    .item .top .info .icon-music {
      position: relative;
      top: 1px;
      /* display: inline-block; */
      /* width: 14px;
      height: 11px; */
 
      /* background-image: url(../images/music_sprite_02.png); */
      /* background-position: 0 -24px; */
    }
 
    .item .top .info .count {
      margin-left: 4px;
    }
 
    .item .top .info .icon-play {
      position: absolute;
      top: 0;
      bottom: 0;
      right: 10px;
      margin: auto 0;
 
      /* display: inline-block; */
      /* width: 16px;
      height: 17px; */
      /* background-image: url(../images/music_sprite_02.png); */
      /* background-position: 0 0; */
    }
 
 
    /* 底部的样式 */
    .item .bottom {
      display: block;
      margin-top: 8px;
      font-size: 14px;
    }
 
    .item .bottom:hover {
      text-decoration: underline;
    }
  </style>
</head>
<body>
   
  <div class="item">
    <div class="top">
      <img src="../images/music_album01.jpg" alt="音乐封面">
      <a class="cover" href="https://music.163.com/#/playlist?id=2312165875"></a>
      <div class="info">
        <i class="sprite_02 sprite_02_icon_music icon-music"></i>
        <span class="count">62万</span>
        <i class="sprite_02 sprite_02_icon_play icon-play"></i>
      </div>
    </div>
    <a class="bottom" href="https://music.163.com/#/playlist?id=2312165875">
      天气好的话,把耳机分给我一半吧
    </a>
    <i class="sprite_02 sprite_02_icon_play"></i>
    <i class="sprite_02 sprite_02_icon_music"></i>
  </div>
 
</body>
</html>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值