关于box-shadow属性的一点心得

  一般我用到box-shadow都是用于诸如按钮,文本块,某些图标,css类似为:

box-shadow: 1px 1px 5px rgba(0, 0, 0, .8);

  这样,样式看上去会更加柔和,或者增加了立体感。

  我个人的理解上,box-shadow的本质就是本体的形状的复制。

  因此,当我们要给样式增加立体感的时候,就可以做的更加逼真。

HTML: <div class="box shadow"></div>
CSS:

      .box {
       width: 300px;
        height: 100px;
      background: #ccc;
      border-radius: 10px;       

      margin: 10px;    

    }  

    .shadow1::before,
    .shadow1::after {
      content:"";
      position:absolute;
      z-index:-1;
      bottom:15px;
      left:10px;
      width:50%;
      height:20%;
      box-shadow:0 15px 10px rgba(0, 0, 0, 0.7);
      transform:rotate(-3deg);
    }

    .shadow1::after{
      right:10px;
      left:auto;
      transform:rotate(3deg);
    }

   以上代码效果如下:

 

   一个非常普通的长方形块元素。

  利用一个更小的长方形伪类,加上box-sizing复制本体形状的特性,模拟出了纸张的立体感。

  同时,box-shadow是可以叠加的,类似box-sizing: 0 0 5px rgba(0, 0, 0, .8), 1px 1px 5px rgba(0, 0, 0, .8),写在前面的属性会在最上面。

  所以我们写出以下的效果:

  

CSS:.shadow {position: absolute;top: 50%;left: 50%;margin-top: -150px;margin-left: -150px;width: 300px;height: 300px;box-shadow: 10px 0 5px rgba(228, 28, 28, 0.8), 0 10px 5px rgba(60, 90, 202, 0.8), -10px 0 5px rgba(81, 247, 86, 0.8), 0 -10px 5px rgba(193, 102, 178, 0.8), 10px 10px 5px rgba(81, 247, 86, 0.8);}

 

  同是,由于我们写的阴影的颜色是带透明度的,因此颜色会中和,我想利用阴影的叠加特性可以做出非常美的效果。

  

  box-shadow既然是一个本体的复制,也就是说我们可以用box-shadow来做出一些图标,用样式写出来的图标我想应该是会比图片加载快,并且是直接和页面一起渲染出来的,就像上面的一个三角图标,就是利用box-shadow写出来的。

  

HTML:<i class="icon-tri"></i>
CSS: .icon-tri {display: inline-block;position: absolute;margin-top: 30px;border-left: 2px solid #ddd;height: 4px;background-color: #ddd;box-shadow: -1px 1px #ddd, 1px 1px #ddd,-2px 2px #ddd, 2px 2px #ddd,-3px 3px #ddd, 3px 3px #ddd,-4px 4px #ddd, 4px 4px #ddd,-5px 5px #ddd, 5px 5px #ddd}        

  我个人认为,box-shadow应该是可以模拟出左右的图片,图标等。

  PS:我看到过有些插件可以做到让你上传一张图片,然后在一个60*60的格子上复现这个图片上60*60px的一块,我想每个px就可以是一个box-shadow,图片的像素可以用canvas的getImageData读取出来,遍历像素的颜色信息,应该这样就可以实现,

  下2周准备琢磨琢磨这个。

  

转载于:https://www.cnblogs.com/youyouluo/p/5791507.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/254618.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Laravel核心解读--控制器

控制器 控制器能够将相关的请求处理逻辑组成一个单独的类&#xff0c; 通过前面的路由和中间件两个章节我们多次强调Laravel应用的请求在进入应用后首现会通过Http Kernel里定义的基本中间件 protected $middleware [\Illuminate\Foundation\Http\Middleware\CheckForMaintena…

C#枚举、值、字符串的相互转换

目录枚举的定义使用方式优点代码示例枚举的定义 枚举是整数类型&#xff0c;用户自定义的整数类型的一个集合。 使用方式 public enum A {a0,b1,c2 }注意&#xff1a;枚举定义的不同变量之间要用“&#xff0c;”分割&#xff0c;结尾不需要加上“&#xff0c;” 优点 可以…

制作404页面的重要性

在网站的运行过程中会面临很多问题&#xff0c;当用户搜索页面时&#xff0c;会提示服务器出错&#xff0c;请求的页面不存在&#xff0c;程序配置错误等问题。用户请求浏览网页碰到这些的情况时&#xff0c;会自动跳出系统默认的错误提示&#xff0c;对用户体验造成不好的感触…

明晰C++内存分配的五种方法的区别

在C中&#xff0c;内存分成5个区&#xff0c;他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈&#xff0c;就是那些由编译器在需要的时候分配&#xff0c;在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。 堆&#xff0c;就是那…

【BZOJ-4631】踩气球 线段树 + STL

4631: 踩气球 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 224 Solved: 114[Submit][Status][Discuss]Description 六一儿童节到了&#xff0c; SHUXK 被迫陪着M个熊孩子玩一个无聊的游戏&#xff1a;有N个盒子从左到右排成一排&#xff0c;第i个盒子里装着Ai个气球。SH…

3D Reconstruction三维重建halcon算子,持续更新

目录3D Reconstruction三维重建Binocular Stereo双目立体binocular_disparitybinocular_disparity_mgbinocular_disparity_msbinocular_distancebinocular_distance_mgbinocular_distance_msdisparity_image_to_xyzdisparity_to_distancedisparity_to_point_3ddistance_to_disp…

遗传算法初级

遗传算法是一种基于仿生学的计算机算法&#xff0c;通过模拟自然进化和优胜劣汰法则来搜索问题的最优解(我会说这其实就是稍微改良了一下的暴搜&#xff1f;) 它是由美国的J.Holland于1975年提出来的玄学概率学混合暴力搜索方法&#xff0c;广泛适用于寻找算法优解、机器学习、…

C++ vector容器类型

vector类为内置数组提供了一种替代表示&#xff0c;与string类一样 vector 类是随标准 C引入的标准库的一部分 &#xff0c;为了使用vector 我们必须包含相关的头文件 &#xff1a;#include <vector> 使用vector有两种不同的形式&#xff0c;即所谓的数组习惯和 STL习惯…

redis在linux命令行下连续进行命令操作

redis-cli -a password -n 9 keys "friend*" -a 是auth -n 是选择数据池 keys就是找key啦、 要是后面再跟上 xargs */redis-cli del redis-cli -a password -n 9 keys "friend*" | xargs redis-cli -a password -n 9 del 就完美了23333 转载于:https://www…

Calibration校准halcon算子,持续更新

目录Calibration校准Binocular双目相机binocular_calibrationCalibration Object 校准物体caltab_pointscreate_caltabdisp_caltabfind_calib_objectfind_caltabfind_marks_and_posegen_caltabsim_caltabCamera parameter相机参数cam_mat_to_cam_parcam_par_to_cam_matdeserial…

javascript:正则表达式、一个表单验证的例子

阅读目录 本文内容&#xff1a;正则表达式&#xff1a;利用正则表达式进行表单验证的例子&#xff1a;回到顶部本文内容&#xff1a; 正则表达式正则表达式的使用方法正则表达式的特殊匹配字符正则表达式修饰符利用正则表达式进行表单验证的例子首发日期&#xff1a;2018-05-13…

Spring_01 spring容器、控制反转(IOC)、依赖注入(DI)

目录 1 什么是spring框架 2 spring框架的特点 3 spring容器 3.1 什么是spring容器 3.2 spring容器创建对象的编程步骤 3.4 spring容器创建对象的方式 3.5 bean元素的几个重要属性 4 IOC 4.1 什么是IOC 4.2 什么事DI 4.3 DI的三种方式 1 什么是spring框架 是一个开源的用来简化企…

EntityFramework 插件之EntityFramework.Extended (批量处理)

接手了一个用EF来做的项目&#xff0c;由于项目中使用的原生处理&#xff0c;导致很多update都是采用先select 后 update的方式来实现&#xff0c;同时无法批量执行逻辑如&#xff1a;根据订单类型统一更新状态等。所以在经过了N多查找之后 发现了一个国外写的扩展插件EntityFr…

一个传值的问题”*”与”*”

1/********************************************************* 2* Desc:参数传递&#xff1a;使用引用传递指针和直接传递指针地址的区别 3* Author:charley 4* DateTime:2010-12-7 11:00 02***********************************************************/ 03#include <…

Classification分类halcon算子,持续更新

目录ClassificationGaussian Mixture Models高斯混合模型add_class_train_data_gmmadd_sample_class_gmmclassify_class_gmmclear_class_gmmclear_samples_class_gmmcreate_class_gmmdeserialize_class_gmmevaluate_class_gmmget_class_train_data_gmmget_params_class_gmmget_…

spring boot 扩展之AutoConfigurationImportListener

最近阅读spring boot源码时发现&#xff0c;发现当spring使用ConfigurationClassParser加载使用Configuration注解类后&#xff0c;会使用AutoConfigurationImportSelector对加载的 Configuration注解的类进行一次过滤。当AutoConfigurationImportSelector过滤完成后会自动加载…

classpath: spring 中的查找方式

Spring可以通过指定classpath*:与classpath:前缀加路径的方式从classpath加载文件,如bean的定义文件.classpath*:的出现是为了从多个jar文件中加载相同的文件.classpath:只能加载找到的第一个文件. 比如 resource1.jar中的package com.test.rs 有一个 jarAppcontext.xml 文件,内…

《高效程序员的45个习惯》-之一

敏捷开发是当下最流行的开发方法&#xff0c;它采用的是一种以人为核心、迭代、循序渐进的开发思想&#xff0c;值得你关注和学习。 最近我就阅读了一本有关敏捷开发的书籍&#xff0c;《高效程序员的45个习惯》。 它以“举反例”的方式来讲述了敏捷开发中程序员应该运用的…

教你如何在 elasticsearch 中重建索引

序言 Elasticsearch 是一个实时的分布式搜索分析引擎。Teambition 使用 Elastisearch 作为搜索引擎&#xff0c;为用户提供搜索服务&#xff0c;当我们决定存储某种数据时&#xff0c;我们需要使用PUT /teambition创建索引&#xff0c;在创建索引的时候需要将数据结构完整确定下…

halcon控制算子Control,持续更新

目录Controlassignassign_atbreakcasecatchcommentcontinueconvert_tuple_to_vector_1dconvert_vector_to_tupledefaultelseelseifendforendifendswitchendtryendwhileexecutable_expressionexitexport_defforglobalififelseimportinsertpar_joinrepeatreturnstopswitchthrowtr…