美文网首页
使用html+css实现以下图形(不能用图片)

使用html+css实现以下图形(不能用图片)

作者: 毕安 | 来源:发表于2016-09-07 17:33 被阅读0次

这是2015阿里巴巴前端实习生在线笔试题中的一道题


刚看到这道题的时候,其实我是一脸懵逼的,要实现这个图片的效果,而且没有给你图片。细看左边那个图形,发现都是一些简单得图形拼成的,那么就可以使用css的border来制作图形,应该是可以实现的。
下面是实现的代码:

<!DOCTYPE html>
<html>
<head>
<title>picture</title>
<style type="text/css">
.rectangle{
    background: #FFF;
    border: 10px solid #999999;
    padding:10px;
    height: 60px;
    width: 100px;
}
.circle{
    position:absolute;
    margin-left: 70px;
    margin-top: 5px;
    width: 20px;
    height: 20px;
    background: #999999; 
    -moz-border-radius: 10px; 
    -webkit-border-radius: 10px; 
    border-radius: 10px;
}
.triangle{
    width: 0; 
    height: 0; 
    position:absolute;
    margin-top: 20px;
    border-bottom: 40px solid #999999; 
    border-left: 25px solid transparent; 
    border-right: 35px solid transparent; 
}
.triangle2{
    width: 0; 
    height: 0; 
    position:absolute;
    margin-top: 30px;
    margin-left: 40px;
    border-bottom: 30px solid #999999; 
    border-left: 15px solid transparent; 
    border-right: 35px solid transparent; 
}
</style>
</head>
<body>
<div class="rectangle">
    <span class="circle"></span>
    <span class="triangle"></span>
    <span class="triangle2"></span>
</div>
</body>
</html>

效果是这样的,跟原图还是很像的:


下面附上使用纯css制作各种基本图形的代码及原理:

如何工作?

我们先看一段代码:

.css-arrow-multicolor { 
  border-color: red green blue orange; 
  border-style:solid; 
  border-width:20px; 
  width:0; 
  height:0; 
}

显示的图片是这样的:



由这个例子可以看出来,当高度和宽度都为零时,显示的就都是border的宽度了,这时候就可以由border来构成我们想要的图形了。比如,可以通过设置某一边的border然后把其他边的border设置为透明色来获得三角形,也可以通过设置border上右下左的不同宽度来使得三角形的高宽不同,而获得不同角度的三角形等。
我们看一个三角形:



对应的css为:
  width: 0;
  height: 0;
  border-bottom: 30px solid #999999; 
  border-left: 15px solid transparent; 
  border-right: 35px solid transparent;  

1、三角形都可以通过这种方式产出,包括上三角、右三角、下三角、左三角、左上、右上、右下、左下三角等。
2、而长方形和正方形的话可以直接通过div设置背景颜色得到,这样还可以在div中添加内容,当然,如果想直接通过border制作出来也是很简单得。
3、圆形的话,css3新增了border-radius属性,只需要让宽度和高度一致,然后设置boeder-radius为他们的一半就ok了。
4、椭圆形可以使用border-radius的X/Y两轴取值,制作出一种变形的圆角,在配合宽度等值,就制作了类似椭圆形的一个效果。css如下:

#oval { 
  width: 200px; 
  height: 100px; 
  background: red; 
  -moz-border-radius: 100px / 50px; 
  -webkit-border-radius: 100px / 50px; 
  border-radius: 100px / 50px; 
}

更多图形制作,请参考http://www.w3cplus.com/css/create-shapes-with-css

相关文章

  • 使用html+css实现以下图形(不能用图片)

    这是2015阿里巴巴前端实习生在线笔试题中的一道题 刚看到这道题的时候,其实我是一脸懵逼的,要实现这个图片的效果,...

  • Web 前端 与 Unity 通信

    概要 UI 部分,由 HTML+CSS 实现 图形绘制部分,由 Unity 实现 【通信方向:Web 应用 => ...

  • OpenGLES入门(四)

    在上一章中,我们使用顶点坐标和顶点颜色,实现了一个简单的3D图形。 在本章中,将会使用图片纹理来继续实现这个图形,...

  • Metal 处理图形渲染和加载图片

    这篇文章将介绍如何使用Metal处理顶点数量多的图形和使用Metal去加载图片。 首先我们来实现使用Metal来处...

  • JS动画(三)

    实现多个元素的动画效果,如下: 我们可以看到移动鼠标可以改变不同图片的透明度 具体实现过程: html+css内容...

  • CSS 精确绘制三角形

    通常情况下,用 CSS 来实现一些简单的图形会比使用图片更有优势,譬如: CSS 可以随时调整图形的颜色; CSS...

  • 树莓派程序自启动

    参考资料 个人经验:根据系统不同(系统是否有图形桌面),可分别使用以下两种方式来实现自启动: 一、(不带图形界面)...

  • python -11-打印图形2*

    使用while,完成以下图形的输出

  • angularjs登录注册表单实践

    使用AngularJS实现登录与注册 html和css布局 我们采用html+css框架bootstrap4,里面...

  • IOS多线程-线程间的通信

    使用NSThread实现线程间的通信 实现效果 ⚠️注意!!! 如果点击屏幕发现不能正常下载图片,并且报以下错误的...

网友评论

      本文标题:使用html+css实现以下图形(不能用图片)

      本文链接:https://www.haomeiwen.com/subject/srgjettx.html