欢迎来到DIVCSS5查找CSS资料与学习DIV CSS布局技术!
  源代码下载
 
  https://github.com/comehope/front-end-daily-challenges
 
  代码解读
 
  定义dom,容器中包含场地,场地中再包含中线、中点、中圈、禁区、罚球点、罚球弧、球门区、角球区等元素:
 
  <divclass="container">
 
  <divclass="field">
 
  <spanclass="halfway-line"></span>
 
  <spanclass="centre-circle"></span>
 
  <spanclass="centre-mark"></span>
 
  <spanclass="penalty-area"></span>
 
  <spanclass="penalty-mark"></span>
 
  <spanclass="penalty-arc"></span>
 
  <spanclass="goal-area"></span>
 
  <spanclass="corner-arc"></span>
 
  </div>
 
  </div>
 
  居中显示:
 
  body{
 
  margin:0;
 
  height:100vh;
 
  display:flex;
 
  align-items:center;
 
  justify-content:center;
 
  background:radial-gradient(sandybrown,maroon);
 
  }
 
  定义容器尺寸:
 
  .container{
 
  width:120em;
 
  height:80em;
 
  background-color:green;
 
  font-size:5px;
 
  }
 
  .containerspan{
 
  display:block;
 
  }
 
  定义线型:
 
  .container{
 
  --line:0.3emsolidwhite;
 
  }
 
  画出场地边线:
 
  .container{
 
  padding:5em;
 
  }
 
  .field{
 
  width:inherit;
 
  height:inherit;
 
  border:var(--line);
 
  }
 
  画出中线:
 
  .halfway-line{
 
  width:calc(120em/2);
 
  height:80em;
 
  border-right:var(--line);
 
  }
 
  画出中圈:
 
  .field{
 
  position:relative;
 
  }
 
  .centre-circle{
 
  width:20em;
 
  height:20em;
 
  border:var(--line);
 
  border-radius:50%;
 
  position:absolute;
 
  top:calc((80em-20em)/2);
 
  left:calc((120em-20em-0.3em)/2);
 
  }
 
  画出中点:
 
  .centre-mark{
 
  width:2em;
 
  height:2em;
 
  background-color:white;
 
  border-radius:50%;
 
  position:absolute;
 
  top:calc(80em/2-1em);
 
  left:calc(120em/2-1em+0.3em/2);
 
  }
 
  画出禁区:
 
  .penalty-area{
 
  width:18em;
 
  height:44em;
 
  border:var(--line);
 
  position:absolute;
 
  top:calc((80em-44em)/2);
 
  left:-0.3em;
 
  }
 
  画出罚球点:
 
  .penalty-mark{
 
  width:2em;
 
  height:2em;
 
  background-color:white;
 
  border-radius:50%;
 
  position:absolute;
 
  top:calc(80em/2-1em);
 
  left:calc(12em-1em);
 
  }
 
  画出罚球弧:
 
  .penalty-arc{
 
  width:20em;
 
  height:20em;
 
  border:var(--line);
 
  border-radius:50%;
 
  position:absolute;
 
  top:calc((80em-20em)/2);
 
  left:calc(12em-20em/2);
 
  }
 
  隐藏罚球弧左侧弧线,只留右侧弧线:
 
  .field{
 
  z-index:1;
 
  }
 
  .penalty-area{
 
  background-color:green;
 
  }
 
  .penalty-arc{
 
  z-index:-1;
 
  }
 
  画出球门区:
 
  .goal-area{
 
  width:6em;
 
  height:20em;
 
  border:var(--line);
 
  position:absolute;
 
  top:calc((80em-20em)/2);
 
  left:-0.3em;
 
  }
 
  画出角球区:
 
  
 
  .field{
 
  overflow:hidden;
 
  }
 
  .corner-arc::before,
 
  .corner-arc::after{
 
  content:'';
 
  position:absolute;
 
  width:5em;
 
  height:5em;
 
  border:0.3emsolidwhite;
 
  border-radius:50%;
 
  --offset:calc(-5em/2-0.3em);
 
  left:var(--offset);
 
  }
 
  .corner-arc::before{
 
  top:var(--offset);
 
  }
 
  .corner-arc::after{
 
  bottom:var(--offset);
 
  }
 
  把dom中的子元素复制出一份,左右两侧各一份:
 
  
 
  <divclass="container">
 
  <divclass="field">
 
  <divclass="left">
 
  <spanclass="halfway-line"></span>
 
  <spanclass="centre-circle"></span>
 
  <spanclass="centre-mark"></span>
 
  <spanclass="penalty-area"></span>
 
  <spanclass="penalty-mark"></span>
 
  <spanclass="penalty-arc"></span>
 
  <spanclass="goal-area"></span>
 
  <spanclass="corner-arc"></span>
 
  </div>
 
  <divclass="right">
 
  <spanclass="halfway-line"></span>
 
  <spanclass="centre-circle"></span>
 
  <spanclass="centre-mark"></span>
 
  <spanclass="penalty-area"></span>
 
  <spanclass="penalty-mark"></span>
 
  <spanclass="penalty-arc"></span>
 
  <spanclass="goal-area"></span>
 
  <spanclass="corner-arc"></span>
 
  </div>
 
  </div>
 
  </div>
 
  右侧的样式与左侧相同,只需要水平翻转即可:
 
  .right{
 
  position:absolute;
 
  top:0;
 
  left:50%;
 
  transform:rotateY(180deg);
 
  }

433498101-5b3840b9257c8_articlex.png




本文转载自中文网

 

如需转载,请注明文章出处和来源网址:http://www.divcss5.com/css3-style/c56909.shtml