精华内容
下载资源
问答
  • 一个很古老的问题,记得我在进行面向对象的入门时曾对此概念不是很清晰的同学解释过 不知楼主对结构有没有概念?(在此假设有)(当然了我的这一段文字的用意除了与楼主讨论外 也和其他朋友讨论) 1.写一个结构,给...

    这是一个很古老的问题,记得我在进行面向对象的入门时曾向对此概念不是很清晰的同学解释过 不知楼主对结构有没有概念?(在此假设有)(当然了我的这一段文字的用意除了与楼主讨论外 也和其他朋友讨论) 1.写一个结构,给它起一个名字,在其内定义若干项数据 2.然后创建它的一个实例 3.可以通过先前创建的实例的名字.结构中某一项数据的名字 可以通过这样的一种方式来获得 或者改变这项数据 这第三步在C语言或VB中行得通,但在JAVA中却行不通了 在JAVA中 public class classOne { private int dataone; private String datatwo; ... private 自定义类型 datan; } classOne obj=new classOne(); obj.dataone=5; 具体说是这样就行不通了 在JAVA中通过对象点数据的方式行不通 因为数据是私有的,也就是在数据的前面加上了private 当然也可不定义为私有,但一般都是私有的(原因后面说) 所以就不能通过对象点的方式访问数据 现在来说说为什么要把数据定义为私有 把数据定义为私有通过公有方法来访问数据,这是一个规范 我们必须把数据定义为私有,因为我们必须要遵守规范! 我原来是玩.net的,后来改玩JAVA,很大的一个感触就是JAVA对.net要有规范 一个东西,在.net中很不经意,在JAVA中确有专门的名称,在.net中可以瞎编,完全不讲规范(虽然不提倡,但是确是可以的) 在JAVA中非但很困难甚至可以说不行.对此我很很深的感触. 所以在JAVA中编程是要讲规范了。除此之外用人的企业只怕也要讲规范....... 所以就让我们一起来遵守规范,从第一个在数据前面加上private,通过公有方法来访问数据开始吧!!!!

    展开全文
  • 一个很古老的问题,记得我在进行面向对象的入门时曾对此概念不是很清晰的同学解释过不知楼主对结构有没有概念?(在此假设有)(当然了我的这一段文字的用意除了与楼主讨论外也和其他朋友讨论)1.写一个结构,给它...

    这是一个很古老的问题,记得我在进行面向对象的入门时曾向对此概念不是很清晰的同学解释过

    不知楼主对结构有没有概念?(在此假设有)(当然了我的这一段文字的用意除了与楼主讨论外

    也和其他朋友讨论)

    1.写一个结构,给它起一个名字,在其内定义若干项数据

    2.然后创建它的一个实例

    3.可以通过先前创建的实例的名字.结构中某一项数据的名字 可以通过这样的一种方式来获得

    或者改变这项数据

    这第三步在C语言或VB中行得通,但在JAVA中却行不通了

    在JAVA中

    public class classOne

    {

    private int dataone;

    private String datatwo;

    ...

    private 自定义类型 datan;

    }

    classOne obj=new classOne();

    obj.dataone=5;

    具体说是这样就行不通了

    在JAVA中通过对象点数据的方式行不通

    因为数据是私有的,也就是在数据的前面加上了private 当然也可不定义为私有,但一般都是私有的(原因后面说)

    所以就不能通过对象点的方式访问数据

    现在来说说为什么要把数据定义为私有

    把数据定义为私有通过公有方法来访问数据,这是一个规范

    我们必须把数据定义为私有,因为我们必须要遵守规范!

    我原来是玩.net的,后来改玩JAVA,很大的一个感触就是JAVA对.net要有规范

    一个东西,在.net中很不经意,在JAVA中确有专门的名称,在.net中可以瞎编,完全不讲规范(虽然不提倡,但是确是可以的)

    在JAVA中非但很困难甚至可以说不行.对此我很很深的感触.

    所以在JAVA中编程是要讲规范了。除此之外用人的企业只怕也要讲规范.......

    所以就让我们一起来遵守规范,从第一个在数据前面加上private,通过公有方法来访问数据开始吧!!!!

    展开全文
  • java中的private到底什么

    千次阅读 2009-04-09 00:42:00
    一个很古老的问题,记得我在进行面向对象的入门时曾对此概念不是很清晰的同学解释过 不知楼主对结构有没有概念?(在此假设有)(当然了我的这一段文字的用意除了与楼主讨论外 也和其他朋友讨论) 1.写一个结构,...

    这是一个很古老的问题,记得我在进行面向对象的入门时曾向对此概念不是很清晰的同学解释过
    不知楼主对结构有没有概念?(在此假设有)(当然了我的这一段文字的用意除了与楼主讨论外
    也和其他朋友讨论)
    1.写一个结构,给它起一个名字,在其内定义若干项数据
    2.然后创建它的一个实例
    3.可以通过先前创建的实例的名字.结构中某一项数据的名字 可以通过这样的一种方式来获得
    或者改变这项数据
    这第三步在C语言或VB中行得通,但在JAVA中却行不通了
    在JAVA中
    public class classOne
    {
    private int dataone;
    private String datatwo;
    ...
    private 自定义类型 datan;
    }
    classOne obj=new classOne();
    obj.dataone=5;
    具体说是这样就行不通了
    在JAVA中通过对象点数据的方式行不通
    因为数据是私有的,也就是在数据的前面加上了private 当然也可不定义为私有,但一般都是私有的(原因后面说)
    所以就不能通过对象点的方式访问数据
    现在来说说为什么要把数据定义为私有
    把数据定义为私有通过公有方法来访问数据,这是一个规范
    我们必须把数据定义为私有,因为我们必须要遵守规范!
    我原来是玩.net的,后来改玩JAVA,很大的一个感触就是JAVA对.net要有规范
    一个东西,在.net中很不经意,在JAVA中确有专门的名称,在.net中可以瞎编,完全不讲规范(虽然不提倡,但是确是可以的)
    在JAVA中非但很困难甚至可以说不行.对此我很很深的感触.
    所以在JAVA中编程是要讲规范了。除此之外用人的企业只怕也要讲规范.......
    所以就让我们一起来遵守规范,从第一个在数据前面加上private,通过公有方法来访问数据开始吧!!!!

    展开全文
  • 大话数据结构

    2018-12-14 16:02:18
    感情上发生了问题,为了女友解释一下,我准备发一条短信,一共打了75个。最后八个字是“我恨你不可能的”,点发送。后来得知对方收到的,只有70个,短信结尾“……我恨你”。 5.5.1串的顺序存储结构 129 ...
  • 文章目录写在前面什么是CSS中的渐变渐变什么是CSS中的渐变线性渐变线性渐变的构成线性渐变语法兼容老版本的浏览器线性渐变的实例线性渐变的样式属性文字的线性渐变动态的线性渐变径渐变径渐变的构成径向渐变的...

    古之立大事者,不唯有超世之才,亦必有坚忍不拔之志——苏轼

    写在前面

    今天在做案例的时候,用到了 CSS3 的渐变,可是用到的时候却发现渐变的语法已经忘了,于是就有了这篇博客。

    什么是CSS中的渐变

    CSS渐变是CSS3的<image>模块中新增的内容,利用CSS渐变代替在HTML页面中引入渐变效果的图片,这样做的话可以减少HTML页面加载的时间,减少带宽的占用。

    CSS渐变的优点:由于CSS渐变是由浏览器直接生成的,在HTML页面缩放时的效果比图片要好,更灵活、方便调整HTML页面布局。

    CSS渐变的分类↓

    • 线性渐变
    • 径向渐变
    • 重复渐变

    渐变

    什么是CSS中的渐变

    CSS渐变是CSS3的<image>模块中新增的内容,利用CSS渐变代替在HTML页面中引入渐变效果的图片,这样做的话可以减少HTML页面加载的时间,减少带宽的占用。

    CSS渐变的优点:由于CSS渐变是由浏览器直接生成的,在HTML页面缩放时的效果比图片要好,更灵活、方便调整HTML页面布局。

    CSS渐变的分类↓

    • 线性渐变
    • 径向渐变
    • 重复渐变

    线性渐变

    线性渐变的构成

    线性渐变由一个轴(基准线)定义的,并且轴上每个点都是有独立的颜色。linear-gradient()函数构建垂直于基准线的渐变效果,渐变的颜色取决于与之垂直相交的基准线上的色点。

    基准线由包含渐变效果容器元素的中心点和一个角度定义的。基准线上的颜色值则由不同的点来定义,包括起始点、终止点、以及两者之间可选的中间点(中间点可以有多个)。

    起始点是基准线和容器元素的定点与基准线垂直线的相交点来定义;终止点是基准线和容器元素最近顶点与基准线垂直直线相交点来定义。

    线性渐变语法

    CSS linear-gradient() 函数用于创建一个表示两种或多种颜色线性渐变的图片。

    语法结构

    linear-gradient(<shape> | <side-or-corner>, <color-stop>, <color-stop>+)
    

    参数说明

    • 第一个参数用于定义线性渐变的方向,并且定义渐变颜色的终止位置、

      • shape: 通过角度来定义渐变的方向。0 度表示渐变方向是从下向上,90度表示渐变从左向右。其他角度按顺时针方法增加。

        image-20200622183228184
      • side-or-corner: 通过关键字定义渐变的方向。具有两种关键字

        • 一种是它包含to和两个关键词

          • 第一个指出水平位置left or right

          • 第二个指出垂直位置top or bottom

            关键词的先后顺序无影响,且都是可选的。

            to top, to bottom(默认值), to leftto right这些值会被转换成角度0度、180度、270度和90度。

        • 另一种是直接使用关键字

          • left或right(90度或者270度): 表示水平位置

          • top或bottom(0度或者180度): 表示垂直位置

            不过需要注意的是:直接使用这种关键字的方式是老版本的浏览器使用的最新语法并不建议使用,而且不同的浏览器的话,不同浏览器的前缀并不一样

            直接使用关键字的话是以某个角度为起点,加个to就表示为终点

          直接使用关键字的话是以某个角度为起点,加个to就表示为终点

    • 第二个参数、第三个参数用于定义渐变颜色的起始点和终止点。

    兼容老版本的浏览器

    对于比较老的版本的浏览器,linear-gradient()函数以及不同引擎的浏览器都提供了不懂的前缀用法

    /* 兼容老版本的浏览器,就语法(已经废除) */
    -prefix-linear-gradient();
    /* WebKit引擎的浏览器(Chrome, Safari, Opera) */
    -webkit-linear-gradient();
    /* Gecko引擎的浏览器(Firefox) */
    -moz-linear-gradient();
    /* Trident引擎的浏览器(IE 10+) */
    -ms-linear-gradient();
    /* Presto引擎的浏览器(Opera) */
    -o-linear-gradient();
    

    线性渐变的实例

    1. 使用角度的方式
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>线性渐变</title>
      <style>
        div{
          height: 400px;
          width: 700px;
          margin: 0 auto;
          border: 1px solid black;
    
          /* 
             linear-gradient(angle, color-stop, color-stop...)
             * angle -> 表示角度(通过角度方式定义线性的基准线的方向),单位为deg
             * color -> 表示颜色以及位置
           */
          background: linear-gradient(0deg, red, yellow);
        }
      </style>
    </head>
    <body>
      <div></div>
    </body>
    </html>
    

    deg是degree的前缀,表示度

    效果图

    image-20200622194540323

    1. 使用关键字的方式
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>线性渐变</title>
      <style>
        .div1 {
          height: 400px;
          width: 700px;
          margin: 0 auto;
    
          /* 
            linear-gradient(side-or-corner, color-stop, color-stop...)
             * side-or-corner -> 通过关键字方式定义线性的基准线的方向
               * left或right(90度或者270度): 表示水平位置
               * top或bottom(0度或者180度): 表示垂直位置
             * color -> 表示颜色以及位置
           */
          background: -webkit-linear-gradient(left, red, yellow);
          /* 为了兼容加个webkit */
        }
    
        .div2 {
          height: 400px;
          width: 700px;
          margin: 0 auto;
          /* 
            * 注意:如果直接使用一个关键字表示起点,加个 to 表示为终点
           */
          background: linear-gradient(to left, red, yellow);
        }
      </style>
    </head>
    
    <body>
      <div class="div1"></div>
      <div class="div2"></div>
    </body>
    
    </html>
    

    使用关键字方式的会出现兼容性问题

    注意:

    仅仅使用不带to的关键字是不建议使用的,有的浏览器并不兼容

    效果图

    image-20200622200627454

    1. 两个关键字的渐变
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>两个关键字的线性渐变</title>
      <style>
        div{
          height: 300px;
          width: 500px;
          margin: 0 auto;
          /* 可以加两个关键字来表示起点, left bottom表示左下 = 45deg*/
          background: -webkit-linear-gradient(left bottom, red, yellow);
        }
      </style>
    </head>
    <body>
      <div></div>
    </body>
    </html>
    

    image-20200622201335095

    1. 多个颜色的渐变
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>三个颜色以上的线性渐变</title>
      <style>
        div {
          height: 300px;
          width: 500px;
          margin: 0 auto;
        }
    
        div:nth-child(1) {
          /* 
            如果不为每个颜色设置位置的话浏览器会自动分配每个颜色的位置
            * 三个颜色的话默认是的位置为0% 50% 100%
           */
          background: linear-gradient(90deg, #333, #aaa, #999);
        }
    
        div:nth-child(2) {
          /* 
            如需要指定位置的话需要仅需要在其后面添加一个位置即可
            * 注意:同时设置颜色和位置的话,中间空格分隔
           */
          background: linear-gradient(90deg, #333, #aaa 80%, #999);
        }
    
        div:nth-child(3) {
          /* 
            这里不仅可以使用百分比的方式,而且还可以使用长度值
            * 长度值:数值+单位(px em pt...)
           */
          background: linear-gradient(90deg, #333, #aaa 400px, #999);
          /* 这里和上面一样的原因是因为这个盒子的宽度为500px 渐变的角度正好是水平的,500px的80%正好是400px */
        }
      </style>
    </head>
    
    <body>
      <div></div>
      <div></div>
      <div></div>
    </body>
    
    </html>
    

    如果不为其设置位置的话浏览器会自动的分配位置

    设置的时候可以使用百分比值或者长度值

    注意:这里如果使用百分比的话就仅仅可以百分百,并不能使用0.0 ~ 1.0的小数

    效果图

    image-20200622203815023

    div3和div2一样的原因是因为这个盒子的宽度为500px 渐变的角度正好是水平的,500px的80%正好是400px

    1. 带透明度的渐变
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>带透明度的渐变</title>
      <style>
        body {
          margin: 0;
          background-color: cadetblue;
        }
    
        .box1{
          height: 300px;
          width: 200px;
          margin: 100px auto;
          /* 
            可以通过rgba()的方式添加透明度
           */
          background: linear-gradient(90deg, rgba(255,255,255,0.2), rgba(255,0,255,0.8), rgba(0,255,0,0.4));
        }
    
      </style>
    </head>
    
    <body>
      <div class="box1"></div>
    </body>
    
    </html>
    

    image-20200622204950454

    可以通过rgba()的方式添加透明度

    1. 使用关键字和角度的问题
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>调度问题</title>
      <style>
        div {
          height: 300px;
          width: 500px;
          margin: 0 auto;
          font-weight: 900;
          text-align: center;
          line-height: 300px;
          font-size: 40px;
        }
    
        /* 使用角度的方式 */
        div:nth-child(1) {
          background: linear-gradient(45deg, red, yellow);
        }
    
        /* 使用关键字的方式 */
        div:nth-child(2) {
          background: linear-gradient(to top right, red, yellow);
        }
    
        /* 
          得出的结论是两个虽然都是45度基准线的渐变,但是不同的是得出的渐变结构并不一样
         */
      </style>
    </head>
    
    <body>
      <div>使用45deg</div>
      <div>使用to top right</div>
    </body>
    
    </html>
    

    效果图

    image-20200704114806670

    两个虽然都是45度基准线的渐变,但是得出的效果明显是不一样的,使用关键字的方法红色明显的多一些,但是使用关键字的方法明显是黄色要明显比红色多一些

    线性渐变的样式属性

    之前使用线性渐变的时候是直接给 background 属性的加的,但是 linear-gradient() 这个函数是作用与 background-color 还是 background-image

    测试代码

    div {
      width: 500px;
      height: 300px;
      margin: 0 auto;
    
    }
    
    div:nth-child(1) {
      background-image: linear-gradient(90deg, rgba(255, 255, 255, 0.2), rgba(255, 0, 255, 0.8), rgba(0, 255, 0, 0.4));
      background-color: linear-gradient(90deg, rgba(255, 255, 255, 0.2), rgba(255, 0, 255, 0.8), rgba(0, 255, 0, 0.4));
    }
    

    测试结果

    由此可以知道线性渐变作用于CSS的 background-image 属性

    线性渐变不仅可以应用于CSS的 background-image 属性,而且可以应用于 border-image 属性

    示例代码

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>线性渐变的样式属性</title>
      <style>
        div {
          width: 500px;
          height: 300px;
          margin: 0 auto;
    
        }
    
        div:nth-child(1) {
    
          /* 线性渐变作用于CSS的 background-image 属性 */
          background-image: linear-gradient(90deg, rgba(255, 255, 255, 0.2), rgba(255, 0, 255, 0.8), rgba(0, 255, 0, 0.4));
        }
    
        div:nth-child(2) {
          border-width: 20px;
          border-style: solid;
          /* 也可以作用于  border-image 属性 */
          border-image: linear-gradient(90deg, rgba(255, 255, 255, 0.2), rgba(255, 0, 255, 0.8), rgba(0, 255, 0, 0.4)) 30 stretch;
        }
      </style>
    </head>
    
    <body>
      <div></div>
      <div></div>
    </body>
    
    </html>
    

    效果图

    image-20200623195053828

    文字的线性渐变

    在 CSS 中为文字设置线性渐变的话当然也是可以的,不过实现的流程有些麻烦

    这里想一想 Photoshop 中实现文字渐变是怎么实现的

    • 弄个渐变的背景
    • 将文字打出来
    • 弄一个白部
    • 然后在白底上抠出文字的样子
    • 最后将文字的透明度调成0

    经过这么几个步骤,就可以做出一个渐变的字体

    在CSS中实现文字渐变的步骤差不多

    • 先给文字的设置一个背景颜色(线性渐变)
    • 通过 background-clip 属性的 text 值将出除了文字以外的内容裁剪掉
    • 将文字的颜色修改为透明

    示例代码

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>线性渐变的样式属性</title>
      <style>
        div {
          width: 850px;
          height: 100px;
          margin: 100px auto 0;
    
          /* 文字设置 */
          font-size: 40px;
          font-weight: 900;
    
          /* 
            background-clip  设置元素的背景(背景图片或颜色)是否延伸到边框、内边距盒子、内容盒子下面。
             * text属性: 以区块内的文字作为裁剪区域向外裁剪,文字的背景即为区块的背景,文字之外的区域都将被裁剪掉。(仅仅可以应用于Chrome内核的浏览器)
           */
           background-clip: text;
           /* 兼容性问题 */
          -webkit-background-clip: text;
    
          /* 将文字的颜色设置为透明 */
          color: transparent;
          -webkit-text-fill-color: transparent;
    
          /* 设置背景渐变颜色 */
          background-image: linear-gradient(90deg, rgba(1, 181, 252, 0.493), rgb(243, 47, 96), rgba(0, 255, 0, 0.4));
    
        }
      </style>
    </head>
    
    <body>
      <!-- 
        这里实现文字渐变的原理:
        * 给文字设置一个背景颜色
        * 通过 background-clip 属性的 text 值将出除了文字以外的内容裁剪掉
        * 将文字的的颜色修改为透明
        因为文字的颜色是透明的,所以我们看到的实际是背景颜色,但是我们又将文字以外的背景给裁剪掉了,所以实现了文字渐变的效果
       -->
      <div>小甜:魔镜魔镜,谁是这个世界上最美丽的女人</div>
      <div>魔镜:这个世界上小甜最好看</div>
    </body>
    
    </html>
    

    效果图

    image-20200623203923670

    使用 CSS 的方式完成文字的渐变的话比使用图片要更好一些,但是存在的弊端就是浏览器兼容问题

    动态的线性渐变

    可以结合 JavaScript 完成渐变的的动态效果

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>动态的线性渐变</title>
      <style>
        div {
          width: 500px;
          height: 300px;
          margin: 0 auto;
    
          background: linear-gradient(90deg, rgba(1, 181, 252, 0.493), rgba(243, 47, 96, 0.466) 0%, rgba(1, 181, 252, 0.493));
        }
      </style>
    </head>
    
    <body>
      <div id="box"></div>
      <script>
        var box = document.getElementById('box');
        // 用于表示当前渐变颜色的位置 位置的范围:0 ~ 100
        var num = 0;
    
        setInterval(function () {
          if (num >= 100) {
            num = 0;
          } else {
            box.style.background = 'linear-gradient(90deg, rgba(1, 181, 252, 0.493), rgba(243, 47, 96, 0.466) ' + num + '%, rgba(1, 181, 252, 0.493))';
            num++;
          }
          // 时间间隔为30毫秒
        }, 30)
      </script>
    </body>
    
    </html>
    

    效果图

    径向渐变

    径向渐变的构成

    径向渐变由其中心点、边缘形状轮廓、位置以及颜色结束点定义的。

    • 径向渐变的中心点至边缘形状以及其延伸的部分是由连续缩放的若干同心轮廓组成的。
    • 颜色结束点用于设定虚拟渐变射线的变化方式,由中心点水平变化至右侧。颜色结束点由百分比设定,中心点为0%终止点为100%。终止点为渐变射线与边缘形状相交的渐变半径。
    • 边缘形状只能是圆形或者椭圆形。

    image-20200624213723864

    径向渐变的语法结构

    CSS radial-gradient() 函数用于创建一个表示由中心点辐射射开的径向渐变的图片。语法结构 ↓

    radial-gradient([<shape>] | [<extent-keyword>] [at<position>], <color-stop> [,<color-stop>]+)
    

    参数

    • shape: 用于定义径向渐变的形状,包括 circle (圆形) 和 ellipse (椭圆形)。

    • extent-keyword: 用于定义径向渐变的边缘形状的位置。

      • closest-side: 渐变的边缘形状与容器距离渐变中心点最近的一边相切(圆形)或者渐变的边缘形状与距离渐变中心点最近的垂直和水平边相切(椭圆)。
      • closest-corner: 渐变的边缘形状与容器距离渐变中心点最近的一个角相交。
      • farthest-side: 与closest-side相反,边缘形状与容器距离渐变中心点最远的一边相切(或最远的垂直和水平边)。
      • farthest-corner: 渐变的边缘形状与容器距离渐变中心点最远的一个角相交。
    • position: 用于定义径向渐变的中心点位置。

    • color-stop: 用于定义径向渐变的颜色终止点。

    径向渐变的实例

    只带颜色参数的实例

    1. 只有两个颜色
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>径向渐变</title>
      <style>
        div{
          width: 600px;
          height: 500px;
          margin: 0 auto;
        }
        div:nth-child(1){
          background-image: radial-gradient(rgb(32, 255, 51), rgb(91, 91, 243));
        }
      </style>
    </head>
    <body>
      <div></div>
    </body>
    </html>
    

    效果图

    image-20200624222616637

    可以明显的看出与线性渐变的不同,径向渐变是可以明显的看出来是从中心往四周扩散,而且距离中心点位置相同的地方的颜色是相同的。

    1. 三个颜色以及以上的渐变
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>径向渐变</title>
      <style>
        div {
          width: 600px;
          height: 300px;
          margin: 0 auto;
        }
    
        div:nth-child(1) {
          /* 
            background-image() 函数设置3个及以上的颜色的话浏览器会自动解析其位置
           */
          background-image: radial-gradient(rgb(32, 255, 51), rgb(91, 91, 243), rgb(96, 228, 96));
        }
    
        div:nth-child(2) {
          /* 
            也可以通过百分比的方式自己定义其颜色出现的位置 颜色和位置使用空格分隔
           */
          background-image: radial-gradient(rgb(32, 255, 51), rgb(91, 91, 243), rgb(255, 32, 169) 88%, rgb(37, 247, 219));
        }
      </style>
    </head>
    
    <body>
      <div></div>
      <div></div>
    </body>
    
    </html>
    

    效果图

    image-20200624223652242

    这里设置位置的话与线性渐变是相同的,唯一不同的是径向渐变是以中心点为基准,而线性渐变是以基准线的一个顶点为基准的

    shape参数的实例

    CSS radial-gradient() 函数的shape参数用于定义径向渐变的形状,该参数有两个值

    • circle: 表示圆形
    • ellipse: 表示椭圆形

    示例代码

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>径向渐变</title>
      <style>
        .container {
          width: 1300px;
    
          margin: 0 auto;
        }
    
        .container div {
          width: 600px;
          height: 400px;
          display: inline-block;
        }
    
        .container div:nth-child(1) {
          /* 
            background-image() 函数可以通过其shape参数设置其径向渐变的形状,此参数有两个值
            * circle: 表示圆形
            * ellipse: 表示椭圆形
           */
          background-image: radial-gradient(ellipse, rgb(32, 255, 51), rgb(91, 91, 243), rgb(96, 228, 96));
        }
    
        .container div:nth-child(2) {
          background-image: radial-gradient(circle, rgb(32, 255, 51), rgb(91, 91, 243), rgb(96, 228, 96));
        }
    
        .container div:nth-child(3) {
          /* 
            shape参数默认情况下会根据其当前元素的高度和宽度自动设置
            * 如果宽度和高度不一样的话默认为椭圆
           */
          background-image: radial-gradient(rgb(32, 255, 51), rgb(91, 91, 243), rgb(96, 228, 96));
        }
    
        .container div:nth-child(4) {
          /* 如果宽度高度一样的话默认为圆形 */
          width: 400px;
          background-image: radial-gradient(rgb(32, 255, 51), rgb(91, 91, 243), rgb(96, 228, 96));
        }
      </style>
    </head>
    
    <body>
      <div class="container">
        <div></div>
        <div></div>
        <div></div>
        <div></div>
      </div>
    </body>
    
    </html>
    

    效果图

    image-20200624225458211

    形状1: 这个径向渐变指定的是 ellipse 参数,效果为一个椭圆

    形状2: 这个径向渐变指定的是 circle 参数,效果为一个正圆

    形状3: 这个并没有指定某个参数,是浏览器自动定义的,这时为一个椭圆,而且跟形状1是一样的,难道其默认就是一个椭圆?

    形状4: 这个形状也没有指定某个参数,但是将其的宽度修改了一下,使其变成了一个正方形,然后神奇的是这个径向渐变居然自己变成了一个正圆

    总结:浏览器会根据其元素的高度和宽度来设置是正圆还是椭圆

    position 的径向渐变

    CSS radial-gradient() 函数的position 参数,用于设置径向渐变的中心点位置。

    • 在一个平面坐标中确定一个点的位置肯定需要两个值,一个x轴的坐标 一个y轴的坐标
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>径向渐变</title>
      <style>
        .container {
          width: 1300px;
    
          margin: 0 auto;
        }
    
        .container div {
          width: 600px;
          height: 400px;
          display: inline-block;
        }
    
        .container div:nth-child(1) {
          /* 
            默认效果
           */
          background-image: radial-gradient(ellipse, rgb(32, 255, 51), rgb(91, 91, 243), rgb(96, 228, 96));
        }
    
        .container div:nth-child(2) {
          /* 
            background-image() 函数可以通过其position参数来设置其出现的位置
            * 在一个平面坐标中确定一个点的位置肯定需要两个值,一个x轴的坐标 一个y轴的坐标
           */
          background-image: radial-gradient(ellipse at 300px 200px, rgb(32, 255, 51), rgb(91, 91, 243), rgb(96, 228, 96));
        }
        .container div:nth-child(3) {
          /* 
            由此可以得知当x和y的值都为0时,此时的中心点在左上角
           */
          background-image: radial-gradient(ellipse at 0px 0px, rgb(32, 255, 51), rgb(91, 91, 243), rgb(96, 228, 96));
        }
        .container div:nth-child(4) {
          /* 
            当x和y的值为当前元素的宽度和高度时,此时的中心点在右下角
           */
          background-image: radial-gradient(ellipse at 600px 400px, rgb(32, 255, 51), rgb(91, 91, 243), rgb(96, 228, 96));
        }
      </style>
    </head>
    
    <body>
      <div class="container">
        <div></div>
        <div></div>
        <div></div>
        <div></div>
      </div>
    </body>
    
    </html>
    

    效果图

    image-20200624231536723

    值得注意的是这里跟平常的平面坐标轴是不一样的,当y轴的值为正数的时候,此时的中心点是向下移动的,当为0的时候中心点默认在最上面

    image-20200624232313888

    extent-keyword 的径向渐变

    CSS radial-gradient() 函数的extent-keyword用于定义径向渐变的边缘形状的位置。其参数有四个值

    • closest-side: 渐变的边缘形状与容器距离渐变中心点最近的一边相切(圆形)或者渐变的边缘形状与距离渐变中心点最近的垂直和水平边相切(椭圆)。
    • closest-corner: 渐变的边缘形状与容器距离渐变中心点最近的一个角相交。
    • farthest-side: 与closest-side相反,边缘形状与容器距离渐变中心点最远的一边相切(或最远的垂直和水平边)。
    • farthest-corner: 渐变的边缘形状与容器距离渐变中心点最远的一个角相交。
    1. closest-side 和 farthest-side 值

    示例代码

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>径向渐变之extent-keyword</title>
    </head>
    <style>
      .container {
        width: 1300px;
    
        margin: 0 auto;
      }
    
      .container div {
        width: 400px;
        height: 400px;
        display: inline-block;
      }
    
      .container div:nth-child(1) {
        /* 
          默认效果
        */
        background-image: radial-gradient(at 100px 100px, rgb(32, 255, 51), rgb(0, 0, 0), rgb(96, 228, 96));
      }
    
      /* 
          background-image() 函数可以通过其extent-keyword用于定义径向渐变的边缘形状的位置。其参数有四个值
          * closest-side: 渐变的边缘形状与容器距离渐变中心点最近的一边相切(圆形)或者渐变的边缘形状与距离渐变中心点最近的垂直和水平边相切(椭圆)。
          * closest-corner: 渐变的边缘形状与容器距离渐变中心点最近的一个角相交。
          * farthest-side: 与closest-side相反,边缘形状与容器距离渐变中心点最远的一边相切(或最远的垂直和水平边)。
          * farthest-corner: 渐变的边缘形状与容器距离渐变中心点最远的一个角相交。
        */
      .container div:nth-child(2) {
        /* closest-side */
        background-image: radial-gradient(closest-side at 100px 100px, rgb(32, 255, 51), rgb(0, 0, 0), rgb(96, 228, 96));
      }
    
      .container div:nth-child(3) {
        /* farthest-side */
        background-image: radial-gradient(farthest-side at 100px 100px, rgb(32, 255, 51), rgb(0, 0, 0), rgb(96, 228, 96));
      }
    </style>
    
    <body>
      <div class="container">
        <div></div>
        <div>
        </div>
        <div></div>
        <div></div>
      </div>
    </body>
    
    </html>
    

    image-20200624235617724

    1. closest-corner 和 farthest-corner 值

    示例代码

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>径向渐变之extent-keyword</title>
    </head>
    <style>
      .container {
        width: 1300px;
    
        margin: 100px auto;
      }
    
      .container div {
        width: 400px;
        height: 400px;
        display: inline-block;
      }
    
      .container div:nth-child(1) {
        /* 
          默认效果
        */
        background-image: radial-gradient(at 100px 100px, rgb(32, 255, 51), rgb(0, 0, 0), rgb(96, 228, 96));
      }
    
      /* 
          background-image() 函数可以通过其extent-keyword用于定义径向渐变的边缘形状的位置。其参数有四个值
          * closest-side: 渐变的边缘形状与容器距离渐变中心点最近的一边相切(圆形)或者渐变的边缘形状与距离渐变中心点最近的垂直和水平边相切(椭圆)。
          * closest-corner: 渐变的边缘形状与容器距离渐变中心点最近的一个角相交。
          * farthest-side: 与closest-side相反,边缘形状与容器距离渐变中心点最远的一边相切(或最远的垂直和水平边)。
          * farthest-corner: 渐变的边缘形状与容器距离渐变中心点最远的一个角相交。
        */
      .container div:nth-child(2) {
        /* closest-corner */
        background-image: radial-gradient(closest-corner at 100px 100px, rgb(32, 255, 51), rgb(0, 0, 0), rgb(96, 228, 96));
      }
    
      .container div:nth-child(3) {
        /* farthest-corner */
        background-image: radial-gradient(farthest-corner at 100px 100px, rgb(32, 255, 51), rgb(0, 0, 0), rgb(96, 228, 96));
      }
    </style>
    
    <body>
      <div class="container">
        <div></div>
        <div>
        </div>
        <div></div>
        <div></div>
      </div>
    </body>
    
    </html>
    

    image-20200625000622306

    径向渐变配合圆形使用

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>径向渐变配合圆使用</title>
      <style>
        html {
          background-color: rgb(87, 87, 87);
        }
    
        div {
          height: 400px;
          width: 400px;
          margin: 100px auto;
          border-radius: 50%;
          /* 可以配合 border-radius 属性来做出一个类似于圆球的效果 */
          background-image: radial-gradient(rgb(32, 255, 51), rgb(37, 37, 37), rgba(255, 255, 255, 0.432));
        }
      </style>
    </head>
    
    <body>
      <div></div>
    </body>
    
    </html>
    

    image-20200625002139194

    可以配合 border-radius 属性来做出一个类似于圆球的效果

    重复渐变

    CSS3 中的线性渐变和径向渐变是不支持自动重复的渐变“模式”,但是可以通过 repeating-linear-gradient() 函数和 repeating-radial-gradient() 函数来实现

    重复渐变分为两种,分别是重复的线性渐变和重复的径向渐变,也就是repeating-linear-gradient() 函数和 repeating-radial-gradient() 函数,其语法格式同linear-gradient() 函数和 radial-gradient() 函数没有任何区别

    示例代码:重复的线性渐变

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>重复渐变之线性渐变</title>
      <style>
        .container{
          width: 700px;
          margin: 0 auto;
        }
        .container div{
          height: 300px;
          width: 300px;
          display: inline-block;
        }
        /* 使用 repeating-linear-gradient() 函数可以在单个元素中无限制的重复当前的渐变*/
        .container div:nth-child(1){
          background: repeating-linear-gradient(45deg, red 0, black 5px, white 10px);
        }
        /* 无重复的线性渐变,便于对比 */
        .container div:nth-child(2){
          background: linear-gradient(45deg, red 0, black 5px, white 10px);
        }
      </style>
    </head>
    <body>
      <div class="container">
        <div></div>
        <div></div>
      </div>
    </body>
    </html>
    

    效果图

    image-20200625010052911

    可以使用这种方法做出好看的纹理效果

    示例二:重复的径向渐变

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>重复的径向渐变</title>
      <style>
        div {
          width: 400px;
          height: 400px;
          margin: 100px auto;
          border-radius: 50%;
          /* 
            repeating-radial-gradient() 函数同 radial-gradient()的语法结构一样
            * 可以做出一些类似于剑靶子的效果
           */
          background: repeating-radial-gradient(red, black 5px, white 10px);
        }
      </style>
    </head>
    
    <body>
      <div></div>
    </body>
    
    </html>
    

    效果图

    image-20200625010747467

    总结

    本博客的内容可以总结为一下思维导图
    总结渐变

    展开全文
  • 并利用具体的例子来全面介绍每个特性,不仅讨论了各个特性是什么,还说明了它是如何工作的,如何使用这个特性来开发软件,以及有关的常见陷阱。  本书面向所有oracle 数据库应用开发人员和dba。 作译者 作者  ...
  • 涵盖了所有最重要的Oracle体系结构特性,包括文件、内存结构和进程,锁和闩,事务、并发和多版本,表和索引,数据类型,以及分区和并行,并利用具体的例子来充分介绍每个特性,不仅讨论了各个特性是什么,还说明了它...
  • 欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章,主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等,欢迎...上述情况的出现大概率因为表述者没有使用结构化方法进行阐释,信息看似非常丰富但.
  • 可是一大堆的概念和术语往往让人望而生畏,很多朋友问我:XML到底什么用,我们是否需要学习它?我想就我个人学习过程的心得和经验,写一篇比较全面的介绍文章。首先有两点需要肯定的:  第一:XML肯定未来的...
  • 你必须知道的495个C语言问题

    千次下载 热门讨论 2015-05-08 11:09:25
    6.3 那么,在C语言中“指针和数组等价”到底是什么意思? 6.4 既然它们这么不同,那为什么作为函数形参的数组和指针声明可以互换呢? 数组不能被赋值 6.5 为什么不能这样数组赋值?externchar*getpass();...
  • 5.1 臭名昭著的空指针到底是什么? 82 5.2 怎样在程序里获得一个空指针? 83 5.3 用缩写的指针比较“if(p)”检查空指针是否有效?如果空指针的内部表达不是0会怎样? 84 NULL 宏 85 5.4 NULL是什么,它是怎么...
  • 5.1 臭名昭著的空指针到底是什么? 82 5.2 怎样在程序里获得一个空指针? 83 5.3 用缩写的指针比较“if(p)”检查空指针是否有效?如果空指针的内部表达不是0会怎样? 84 NULL 宏 85 5.4 NULL是什么,它是怎么...
  • 隐马尔科夫(HMM)模型

    千次阅读 2017-10-17 21:42:23
    隐马尔科夫(HMM)模型隐马尔科夫(Hidden Markov model)模型一类基于概率统计的模型,一种结构最简单的动态贝叶斯网,一种重要的有图模型。自上世纪80年代发展起来,在时序数据建模,例如:语音识别、文字识别...
  • 6.3 那么,在C语言中“指针和数组等价”到底是什么意思?  6.4 既然它们这么不同,那为什么作为函数形参的数组和指针声明可以互换呢?  数组不能被赋值  6.5 为什么不能这样数组赋值?externchar*getpass();...
  •  第5章 空指针 空指针和空指针常量 5.1 臭名昭著的空指针到底是什么? 5.2 怎样在程序里获得一个空指针? 5.3 用缩写的指针比较“if(p)”检查空指针是否有效?如果空指针的内部表达不是0会怎样? NULL宏 ...
  • 6.3 那么,在C语言中“指针和数组等价”到底是什么意思? 64 6.4 既然它们这么不同,那为什么作为函数形参的数组和指针声明可以互换呢? 65 数组不能被赋值 66 6.5 为什么不能这样数组赋值?extern char *...
  • 《你必须知道的495个C语言问题》,作者:【美】Steve Summit,翻译:孙云、朱群英。... 6.3 那么,在C语言中“指针和数组等价”到底是什么意思?  6.4 既然它们这么不同,那为什么作为函数形参的数组和...
  • 26、说出数据连接池的工作机制是什么? 我的答案: 反正解释的很乱我感觉 27、垃圾回收的优点和原理。并考虑2种回收机制。 我的答案: 动态回收 解释的很乱 网上答案: Java语言中一个显著的特点就是引入了...
  • 5.1 臭名昭著的空指针到底是什么? 5.2 怎样在程序里获得一个空指针? 5.3 用缩写的指针比较“if(p)”检查空指针是否有效?如果空指针的内部表达不是0会怎样? NULL 宏 5.4 NULL是什么,它是怎么定义的? 5.5 在使用...
  • 《你必须知道的495个C语言问题》

    热门讨论 2010-03-20 16:41:18
    5.1 臭名昭著的空指针到底是什么? 53 5.2 怎样在程序里获得一个空指针? 54 5.3 用缩写的指针比较“if(p)”检查空指针是否有效?如果空指针的内部表达不是0会怎样? 55 NULL 宏 56 5.4 NULL是什么,它是...
  • 5.1 臭名昭著的空指针到底是什么? 5.2 怎样在程序里获得一个空指针? 5.3 用缩写的指针比较“if(p)”检查空指针是否有效?如果空指针的内部表达不是0会怎样? NULL 宏 5.4 NULL是什么,它是怎么定义的? 5.5 在使用...
  • o 7.3 那么, 在 C 语言中 ``指针和数组等价" 到底是什么意思 ? o 7.4 那么为什么作为函数形参的数组和指针申明可以互换呢 ? o 7.5 如果你不能给它赋值, 那么数组如何能成为左值呢 ? o 7.6 现实地讲, 数组和...
  • 64 位机上的 64 位类型是什么样的? . . . . . . . . . . . . . . . . 1 1.3 怎样定义和声明全局变量和函数最好? . . . . . . . . . . . . . . . 2 1.4 extern 在函数声明中是什么意思? . . . . . . . . . . . . ....

空空如也

空空如也

1 2 3 4 5 6
收藏数 111
精华内容 44
关键字:

向字到底是什么结构