2

我正在尝试使用 CSS 绘制一个简单的文件夹图标,这就是我所在的位置:

/* CSS */
.container {
  border: solid 1px #000;
  width: 100px;
  height: 100px;
  padding: 5px;
  text-align: center;
}
.folder_tab, .folder {
  margin: 0 auto;
  background-color: #708090;
}
.folder_tab {
  width: 25px;
  height: 5px;
  margin-right: 50%;
  border-radius: 5px 15px 0 0;
}
.folder {
  width: 50px;
  height: 35px;
  border-radius: 0 5px 5px 5px;
  box-shadow: 1px 1px 0 1px #CCCCCC;
}

<!-- HTML -->
<div class="container">
  <div class="folder_tab"></div>
  <div class="folder"></div>
  text
</div>

结果:在此处输入图像描述

有没有更简单或更优雅的方法来做到这一点?

4

3 回答 3

11

如果您想使用 CSS3,这是我的解决方案。

HTML

<div class="folder"></div>

CSS

.folder {
    width: 150px;
    height: 105px;
    margin: 0 auto;
    margin-top: 50px;
    position: relative;
    background-color: #708090;
    border-radius: 0 6px 6px 6px;
    box-shadow: 4px 4px 7px rgba(0, 0, 0, 0.59);
}

.folder:before {
    content: '';
    width: 50%;
    height: 12px;
    border-radius: 0 20px 0 0;
    background-color: #708090;
    position: absolute;
    top: -12px;
    left: 0px;
}

演示(在 Chrome 中测试)

于 2013-04-06T23:36:10.757 回答
2

这是我的解决方案:

http://jsfiddle.net/wQdgs/

HTML

<div>text</div>

CSS

div {
    width: 100px;
    height: 50px;
    padding-top: 50px;
    border: solid 1px #000;
    position: relative;
    text-align: center;
}

div:after {
    content: " ";
    width: 50px;
    height: 35px;
    border-radius: 0 5px 5px 5px;
    box-shadow: 1px 1px 0 1px #CCCCCC;
    display: block;
    background-color: #708090;
    position: absolute;
    top: 15px;
    left: 25px;    
}

div:before {
    content: " ";
    width: 25px;
    height: 5px;
    border-radius: 5px 15px 0 0;
    display: block;
    background-color: #708090;
    position: absolute;
    top: 10px;
    left: 25px;
}
于 2013-04-06T23:41:54.530 回答
2

我知道这个线程有点老了,但我问自己是否有一些简单的纯 CSS 和简约 HTML 来更新我使用背景图像作为图标的旧树库,从而跳入了这个问题。

我自己尝试过,我想出了一些符合扁平化设计的东西,今天它正在彻底改变跨设备 UI:

https://jsfiddle.net/landzup/Lzjadp5r/

这只是一个建议或一个起点,但是通过尽可能放大看到页面没有丢失一个像素的分辨率,真是太棒了!(就像矢量图形一样)。

我使用了一个简短的 HTML:

<div class="folder">
    <div class="icon"></div>
    Programming
</div>

这是CSS:

<style type="text/css">
.folder {
    display: block;
    position: relative;
    top: 0;
    left: 0;
    margin: 18px 0;
    font: 18px helvetica, arial, sans-serif;
    text-indent: 27px;
    line-height: 34px;
}

.folder .icon {
    content: "";
    display: block;
    float: left;
    position: relative;
    top: 0;
    left: 0;
    width: 30px;
    height: 30px;
    border: 2px solid #999;
    background: #ddd;
    -moz-border-radius: 2px; -webkit-border-radius: 2px; -o-border-radius: 2px; border-radius: 2px;
    -moz-transform: scale(1) rotate(0deg) translateX(10px) skewX(10deg);
    -webkit-transform: scale(1) rotate(0deg) translateX(10px) skewX(10deg);
    -o-transform: scale(1) rotate(0deg) translateX(10px) skewX(10deg);
    -ms-transform: scale(1) rotate(0deg) translateX(10px) skewX(10deg);
    transform: scale(1) rotate(0deg) translateX(10px) skewX(10deg);
}

.folder .icon::after {
    content: "";
    display: block;
    position: relative;
    top: 7px;
    left: -6px;
    width: 30px; height: 21px;
    border: 2px solid #999;
    background: #ddd;
    -moz-border-radius: 2px; -webkit-border-radius: 2px; -o-border-radius: 2px; border-radius: 2px;
    -moz-transform: scale(1) rotate(0deg) translateX(10px) skewX(-20deg);
    -webkit-transform: scale(1) rotate(0deg) translateX(10px) skewX(-20deg);
    -o-transform: scale(1) rotate(0deg) translateX(10px) skewX(-20deg);
    -ms-transform: scale(1) rotate(0deg) translateX(10px) skewX(-20deg);
    transform: scale(1) rotate(0deg) translateX(10px) skewX(-20deg);
}
</style>

它使用 CSS 3 转换,因此您应该考虑您的目标受众是否支持其浏览器。这里有 CSS 转换的 CSS 兼容性表:

http://caniuse.com/#feat=transforms2d

于 2016-02-16T12:34:32.467 回答