首页 前端知识 使用纯CSS3构建全套iOS风格图标

使用纯CSS3构建全套iOS风格图标

2024-09-06 00:09:11 前端知识 前端哥 988 980 我要收藏

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:CSS3是前端开发中用于设定网页视觉效果的关键语言。本主题专注于CSS3的特性如何运用于创建类似iOS风格的小图标。通过探讨CSS3的关键技术如边框半径、渐变、阴影、内容生成、动画、响应式设计和Flexbox布局,读者将学习到如何用纯CSS实现这些图标,从而提高前端开发能力并减少图片依赖。 纯CSS3实现一套完整iOS小图标

1. 纯CSS3实现一套完整iOS小图标

随着Web技术的发展,设计师和前端开发者不断追求在网页上实现美观且功能强大的界面元素。在众多图标库中,苹果风格(iOS风格)的图标由于其简洁的设计和广泛的应用受到了许多人的喜爱。利用纯CSS3,我们不仅能创造出简洁明了的图标,而且还能实现响应式设计,使图标在各种屏幕和设备上均有良好的显示效果。

创建基础图标形状

要使用CSS3创建图标,我们首先需要定义一个基础的形状。我们可以通过设置 border-radius 属性来实现。例如,要创建一个简单的圆形图标,我们可以给一个 div 元素设置如下CSS样式:

.icon {
    width: 50px;
    height: 50px;
    background-color: #333;
    border-radius: 50%;
}

这段代码将创建一个宽度和高度都是50像素,并且背景色为深灰色的圆形元素。通过简单的属性调整,我们已经能够创建出第一个基础图标。

使用伪元素和content属性添加细节

接下来,我们可以利用CSS的伪元素( ::before ::after )和 content 属性来为图标添加更多细节。例如,我们想在上述圆形图标的基础上添加一个简单的加号标记来模拟加号图标,我们可以这样做:

.icon::before,
.icon::after {
    content: '';
    display: block;
    position: absolute;
    background: white;
}

.icon::before {
    width: 10px;
    height: 2px;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

.icon::after {
    width: 2px;
    height: 10px;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

通过上述代码,我们在 .icon 元素前和后各添加了一个伪元素,它们的内容为空( content: '' ),并且都使用 display: block 使其表现得像普通的块级元素。我们通过绝对定位和变换将它们放置在图标的中心,从而创建了一个加号标记。

从创建基础形状到利用CSS3的高级特性细化图标细节,这些技术的组合为我们提供了一个强大的工具集,能够仅使用纯CSS创建出视觉效果丰富且响应式的图标。这种技术不仅减少了对图片资源的依赖,还提高了网页的性能和可维护性。在后续的章节中,我们将探讨CSS3更多的选择器使用技巧、高级样式设计、动画效果和响应式布局技术,进一步提升图标的表现力和功能。

2. CSS3的选择器使用技巧

2.1 基本选择器的运用

2.1.1 元素选择器

元素选择器是最基本的CSS选择器之一,它通过HTML标签来选择元素,并赋予相应的样式。在Web开发中,元素选择器被广泛用于定义各个元素的默认样式。例如:

p {
    color: blue;
    font-size: 14px;
}

在上述代码中,所有的 <p> 标签中的文本将会显示为蓝色且字体大小为14像素。元素选择器的优势在于它的简洁性和直接性。但缺点是应用范围过于广泛,可能会影响到其他不期望被改变的元素。因此,在实际应用中,更多时候我们会和其他选择器结合使用,以提高选择的精确性。

2.1.2 类选择器与ID选择器

类选择器和ID选择器都是面向对象的选择器,它们允许开发者为HTML元素指定标识符,然后通过CSS精确地选择这些元素。类选择器使用点( . )表示,ID选择器使用井号( # )表示。例如:

.center {
    text-align: center;
}

#main-header {
    background-color: #333;
}

类选择器 .center 可以应用于多个元素,而ID选择器 #main-header 理论上应只应用于一个元素。在应用时要确保ID的唯一性。类选择器和ID选择器的运用,使得CSS能够更灵活地控制页面布局和样式,有助于实现模块化的样式管理。

2.1.3 属性选择器的应用

CSS属性选择器可以根据元素的属性或属性值来选择元素,提供了比元素和类选择器更精细的控制能力。例如,选择所有 <a> 标签且具有 href 属性的元素:

a[href] {
    color: green;
}

此外,属性选择器还支持更复杂的匹配模式,如使用 ^= $= *= 进行值的精确匹配、前缀匹配和子串匹配:

/* 精确匹配 */
img[src="logo.png"] {
    width: 100px;
}

/* 前缀匹配 */
a[href^="***"] {
    border-left: 4px solid #00a;
}

/* 子串匹配 */
a[href*="example"] {
    color: red;
}

/* 后缀匹配 */
a[href$=".pdf"] {
    font-weight: bold;
}

通过这种方式,开发者可以针对具有特定属性或属性值的元素进行精确的样式设置。

2.2 高级选择器的高级技巧

2.2.1 结合选择器的组合使用

结合选择器可以将不同种类的选择器组合在一起,以达到更加具体的样式应用。最常见的组合选择器包括后代选择器、子选择器和相邻兄弟选择器。

后代选择器使用空格表示,匹配所有指定元素的后代,例如:

div p {
    color: gray;
}

上述代码将选择所有位于 <div> 标签内的 <p> 元素,并将它们的文本颜色设置为灰色。

子选择器( > )仅匹配直接子元素,而不包括更深层次的后代元素。例如:

div > p {
    color: orange;
}

相邻兄弟选择器( + )用于匹配紧接在另一个指定元素之后的元素,如下例中紧随 <h1> 标签后的第一个 <p> 标签:

h1 + p {
    font-weight: bold;
}

通过灵活运用这些组合选择器,开发者可以实现更加精细的样式控制。

2.2.2 伪类选择器详解

伪类选择器用于选择元素的特定状态,比如鼠标悬停、链接的访问状态、元素的焦点状态等。它们以冒号( : )开头,并可以与其他选择器一起使用来增强选择器的表达能力。

以下是一些常用的伪类选择器示例:

  • :hover :鼠标悬停时的样式。
  • :focus :元素获得焦点时的样式。
  • :active :元素被激活(如鼠标点击)时的样式。
  • :first-child :父元素的第一个子元素。
  • :nth-child(n) :父元素的第n个子元素。

例如:

a:hover {
    text-decoration: underline;
}

input:focus {
    border-color: blue;
}

button:active {
    background-color: red;
}

li:first-child {
    font-weight: bold;
}

li:nth-child(2n) {
    color: grey;
}

伪类选择器在交互式Web应用中非常有用,它们能够增强用户体验,使网页界面的互动性更强。

2.2.3 伪元素选择器的应用

伪元素选择器用于选择元素的特定部分,这些部分在文档树中并不存在,但CSS允许我们通过伪元素来选择它们。常见的伪元素包括 ::before ::after

伪元素可以用来插入生成内容,例如:

p::before {
    content: "»";
    color: red;
}

p::after {
    content: "«";
    color: red;
}

在这段代码中,每个 <p> 标签的前后都会插入生成的内容,分别是“»”和“«”,并且颜色为红色。伪元素还可以用于装饰性目的,比如添加装饰性的边框或图标。

通过本章节的介绍,我们详细探讨了CSS选择器的基础知识,包括基本选择器和高级选择器的运用技巧。掌握这些选择器的使用,对于熟练运用CSS进行页面布局和设计至关重要。在下一章中,我们将进一步深入探讨利用 border-radius 属性创建圆角矩形图标的方法和技巧,继续提升Web开发的视觉效果。

3. 利用border-radius创建圆角矩形图标

在第三章中,我们将深入了解如何使用CSS3中的 border-radius 属性来创建美观的圆角矩形图标。这不仅包括基础的圆角矩形实现原理,还涵盖了如何设计不同尺寸的图标以及对视觉效果进行优化。

3.1 border-radius基础

3.1.1 圆角矩形的实现原理

border-radius 属性是在CSS3中引入的,它允许开发者在元素的四个角上添加圆角效果。一个简单的圆角矩形图标可以通过给 border-radius 属性设置相同值来实现。

.icon {
  width: 50px;
  height: 50px;
  background-color: #4CAF50;
  border-radius: 10px; /* 设置所有角的圆角半径 */
}

在上面的示例中, .icon 类的 border-radius 被设置为 10px ,这会在每个角上创建半径为10px的圆角。当所有角的半径值相同的时候,我们可以得到一个规则的圆角矩形。

3.1.2 单角圆角与多角圆角的创建

border-radius 属性允许对每个角单独设置不同的圆角半径。开发者可以使用一对值、三个值或四个值来定义每个角的圆角半径。例如,要创建一个左上角和右上角是圆角而另外两个角是直角的矩形图标,可以这样写:

.icon {
  width: 100px;
  height: 50px;
  background-color: #4CAF50;
  border-radius: 10px 10px 0 0; /* 上左、上右、下右、下左 */
}

通过上述设置,只有左上角和右上角被设置为 10px 圆角半径,其他角保持直角。

3.2 圆角图标的设计与优化

3.2.1 不同尺寸图标的设计技巧

对于不同尺寸的图标,通过 border-radius 设置合理的圆角尺寸至关重要。随着图标的尺寸变化,圆角的半径可能需要相应地进行调整,以保持整体的视觉平衡和美观性。以下是几个技巧:

  • 保持圆角半径与图标的尺寸成比例 :较大的图标可以使用更大的圆角半径,而较小的图标则可能需要较小的圆角半径。
  • 使用百分比值 :在某些情况下,使用百分比值作为圆角半径可能比使用固定像素值更为合适,这样可以确保图标在不同尺寸下都能保持一定的圆角比例。

3.2.2 图标的视觉效果优化

为了进一步优化圆角图标的视觉效果,可以考虑以下几点:

  • 过渡效果 :为图标添加CSS过渡效果,可以在鼠标悬停时平滑地改变圆角半径,提供更加动态的交互体验。
  • 伪元素增强 :利用CSS伪元素可以增加图标的装饰性细节,比如添加阴影或渐变背景,来增强圆角图标的立体感和层次感。

示例:过渡效果的实现

.icon {
  width: 100px;
  height: 100px;
  background-color: #3498db;
  border-radius: 50%;
  transition: border-radius 0.5s;
}

.icon:hover {
  border-radius: 10px; /* 鼠标悬停时改变圆角大小 */
}

在上述代码中,当鼠标悬停在 .icon 元素上时,过渡效果会使圆角大小发生变化,从而实现一个平滑的视觉过渡。

示例:伪元素的使用

.icon::before {
  content: '';
  display: block;
  width: 120%;
  height: 120%;
  background: #e74c3c;
  border-radius: 50%;
  position: absolute;
  top: -10%;
  left: -10%;
  z-index: -1;
  filter: blur(5px);
  opacity: 0.7;
}

在上述代码中,我们通过 ::before 伪元素创建了一个较大的模糊阴影,这样可以增加图标的深度感,同时保持圆角的视觉效果。

总结: 圆角矩形图标在设计时应该综合考虑尺寸比例和视觉效果。通过 border-radius 属性的应用,并结合过渡效果和伪元素的使用,可以有效地提升图标的美观度和用户交互体验。

4. 通过渐变效果设计图标背景

渐变效果是现代Web设计中一个非常流行的视觉元素,它能够为图标背景增加深度和维度,从而创造出更加丰富和引人注目的视觉效果。本章将介绍CSS3中渐变的基本使用方法,并探讨如何实现高级渐变效果以及与图像结合的创新设计。

4.1 CSS3渐变的基本使用

4.1.1 线性渐变的制作方法

线性渐变是最常见的渐变类型之一,它沿着一条直线改变颜色。CSS3中的线性渐变语法非常直观,可以通过 linear-gradient() 函数来实现。基本语法如下:

background: linear-gradient(direction, color-stop1, color-stop2, ...);

这里的 direction 指的是渐变方向,可以是角度或者方向关键字(如 to top to right 等)。 color-stop 是指定颜色的停止位置。

例如,创建一个从上到下的渐变背景,从黑色过渡到白色:

.linear-gradient-example {
  background: linear-gradient(to bottom, black, white);
}

这段代码会在指定元素上产生一个从顶部到底部的渐变,颜色从黑色过渡到白色。

4.1.2 径向渐变的应用实例

径向渐变(radial-gradient)创建的是从中心点向四周扩散的渐变效果。它的语法结构和线性渐变相似,但提供了额外的控制,比如形状和尺寸:

background: radial-gradient(shape size at position, start-color, ..., last-color);

shape 可以是 circle (圆形)或 ellipse (椭圆形), size 可以是 closest-side farthest-side 等。 position 表示渐变的中心位置。

例如,创建一个以元素中心为起点的椭圆形渐变:

.radial-gradient-example {
  background: radial-gradient(ellipse at center, red, yellow 100px, green 100%);
}

这段代码将在中心点开始向外扩散一个从红色到黄色再到绿色的椭圆渐变,其中100px处是黄色到绿色的过渡。

4.2 高级渐变效果的实现

4.2.1 多重渐变的叠加使用

CSS3允许在一个元素上叠加多个渐变效果。这可以通过在 background 属性中应用多个 linear-gradient() radial-gradient() 函数来实现。

.multiple-gradient-example {
  background: 
    linear-gradient(to right, blue, green),
    radial-gradient(circle, red, blue);
}

以上代码将同时显示一个水平方向的线性渐变和一个中心点的径向渐变。多重渐变的叠加提供了更复杂的视觉效果,可根据设计需要进行调整和优化。

4.2.2 渐变与图像结合的创新设计

除了单独使用渐变之外,还可以将渐变效果与图像结合,形成更加生动和个性化的背景。这种技术在图标设计中特别有用。

``` bined-gradient-image-example { background-image: linear-gradient(rgba(0,0,0,0.5), rgba(0,0,0,0.5)), url('path-to-image.jpg'); background-size: cover; background-repeat: no-repeat; background-position: center center; }


这段代码结合了一个半透明的线性渐变和一张图片,用于为图标创建一个更有深度的背景。通过调整`rgba`值中的透明度,可以控制图像的可见程度,达到理想的设计效果。

在实际应用中,渐变与图像的结合可以提高图标的视觉吸引力,同时保持整体的协调性和美观度。


以上内容仅作为本章节的概述性描述,实际操作中还需要综合考虑设计原则、用户体验和性能优化等多方面因素。在实现具体设计时,需要仔细调试渐变的颜色、方向和叠加效果,以保证最终结果能够满足设计目标和用户需求。

# 5. 使用阴影实现图标立体感

## 5.1 阴影属性的全面解读

### 5.1.1 水平和垂直阴影的调整

阴影效果能够增加图标或元素的立体感,是实现视觉层次感的一种常用技术。CSS中的阴影由`box-shadow`属性控制,它提供了水平偏移、垂直偏移、模糊半径和颜色这几个参数来调整阴影效果。

水平阴影是通过`offset-x`参数控制的,正值会使阴影向元素的右侧移动,负值则相反。垂直阴影则由`offset-y`参数控制,正值向下偏移,负值则向上偏移。这两个参数共同决定了阴影的方向和距离。

```css
.icon {
  box-shadow: 5px 5px 8px rgba(0, 0, 0, 0.5);
}

上面的代码中, 5px 5px 分别是水平和垂直偏移量, 8px 是模糊半径, rgba(0, 0, 0, 0.5) 定义了阴影的颜色和透明度。通过调整这些值,可以实现阴影效果的精准控制。

5.1.2 阴影模糊和扩散半径的控制

模糊半径( blur-radius )决定了阴影的模糊程度,数值越大阴影边界越模糊。扩散半径( spread-radius )则是用来增加阴影的大小,正值会使阴影向外扩展,负值则会使阴影缩小。

.icon {
  box-shadow: 5px 5px 10px 3px rgba(0, 0, 0, 0.5);
}

在这个例子中,模糊半径是 10px ,扩散半径是 3px 。扩散半径为正,所以阴影的范围会比元素本身大,增加了立体感。

5.2 阴影效果的深度设计

5.2.1 创造性地使用多重阴影

为了进一步增强图标或元素的立体感,我们可以使用 box-shadow 属性添加多重阴影。通过堆叠不同的阴影效果,可以模拟出复杂的光照环境。

.icon {
  box-shadow: 
    5px 5px 8px rgba(0, 0, 0, 0.2),
    10px 10px 15px rgba(0, 0, 0, 0.5);
}

在这个例子中,使用了两个阴影。第一个阴影较浅,提供了基础的阴影效果,而第二个阴影较深,用来增加额外的立体感。注意,多重阴影是通过逗号分隔的多个阴影值实现的。

5.2.2 结合光照效果增强立体感

为了使立体感更自然,我们还可以结合光照效果。通过模拟光源的位置,我们可以添加一些高亮区域,模拟光线照射的效果,进一步增强立体感。

.icon {
  box-shadow: 
    0 0 10px rgba(255, 255, 255, 0.8) inset, /* 内部高亮模拟光照射 */
    5px 5px 8px rgba(0, 0, 0, 0.2), /* 外部阴影模拟地面 */
    10px 10px 15px rgba(0, 0, 0, 0.5); /* 外部阴影增加深度 */
}

通过组合不同类型的阴影,不仅增加了元素的立体感,而且也模拟出更加丰富的光照效果。注意,内阴影( inset )通常用于创建元素的高光部分,给视觉效果添加更多的深度和细节。

要完美地结合光照效果,通常需要根据图标本身的颜色和设计,进行多次调整和试验,找到最合适的阴影组合。接下来,我们来看看如何将这些阴影属性与实际图标结合使用,并且对图标进行优化以适配不同的显示效果。

6. 使用content属性和伪元素制作图标内容

6.1 content属性的妙用

6.1.1 通过content生成内容

在CSS中, content 属性是一个非常强大的工具,它可以在指定的伪元素中插入内容。这可以是纯文本字符串、URL、计数器的值,甚至是插入一个自定义的 attr() 值。利用这一特性,我们可以不通过HTML元素来直接在页面上展示图标内容,从而在使用第三方图库时减少不必要的DOM元素和潜在的渲染开销。

.icon::before {
  content: '\f013'; /* Unicode字符代码 */
  font-family: FontAwesome; /* 指定字体图标库 */
}

在上述示例中,我们创建了一个伪元素( ::before ),并为其指定了 content 属性,其中包含了来自Font Awesome字体图标的Unicode字符代码。这种方式允许我们在不需要引入额外图片或图标字体文件的情况下,展示一个图标。

6.1.2 图标的动态内容填充

content 属性的另一个重要用途是实现动态内容的填充。这对于可编程生成内容的应用场景尤为重要,例如,根据页面内容自动生成带有注释或描述的图标。

[data-tooltip]::after {
  content: attr(data-tooltip); /* 使用data-tooltip属性的值作为内容 */
}

在这个例子中,我们为拥有 data-tooltip 属性的元素添加了一个伪元素( ::after ),其内容来自于这个属性的值。这意味着你可以通过HTML标记动态地决定什么内容需要显示在图标上。

6.2 伪元素的深层次应用

6.2.1 伪元素与图标的融合

伪元素不仅仅用于添加内容,它们还可以用来增强图标的视觉效果。例如,通过在图标周围添加一个装饰性的边框,或者在图标下面添加一个渐变背景来提升视觉吸引力。

.icon::before {
  content: '';
  display: block;
  position: absolute;
  top: -5px;
  right: -5px;
  bottom: -5px;
  left: -5px;
  border: 3px solid #333;
  border-radius: 10px;
}

在上述代码中,通过伪元素 ::before 创建了一个装饰性的边框,并且通过绝对定位将其与图标重合,从视觉上增强了图标的边框效果。

6.2.2 伪元素的装饰性应用案例

伪元素也可以用来创建更复杂的视觉效果,比如图标的阴影、高光、反射等。伪元素可以被设置为独立于主图标的层,允许创建更复杂且个性化的视觉效果。

.icon::after {
  content: '';
  display: block;
  position: absolute;
  top: 0;
  right: 0;
  width: 100%;
  height: 100%;
  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), transparent);
  z-index: -1;
}

在这个例子中,我们使用了 ::after 伪元素来创建一个线性渐变背景,该背景覆盖了图标本身,从而创造出一种阴影效果。这种渐变可以按照设计需求进行调整,以适应不同的视觉主题和风格。

通过上述技术,我们可以看到CSS中的 content 属性和伪元素的强大能力,它们不仅可以用于创建复杂的图标样式,还能够在不增加额外HTML标记的情况下,实现高度动态和视觉上吸引人的设计解决方案。

7. CSS3动画效果的实现方法

CSS3为设计师提供了一种无需JavaScript即可实现动画效果的强大工具。本章节将为您介绍如何构建基础的CSS3动画,并进一步探讨其高级应用。

7.1 动画基础的构建

动画效果可以通过CSS3中的 @keyframes 规则和 animation 属性来实现。这种方法可以创建流畅且灵活的动画效果。

7.1.1 @keyframes规则的使用

@keyframes 规则允许我们定义动画序列中的各个阶段。我们可以通过指定CSS属性的值来定义动画的开始、中间和结束状态。

@keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

在上面的例子中,我们定义了一个名为 fadeIn 的动画,它将会改变元素的透明度从完全透明( opacity: 0 )到完全不透明( opacity: 1 )。

7.1.2 animation属性的细致讲解

animation 属性是将 @keyframes 定义的动画应用到元素上的关键。这个属性可以接受多个子属性,包括动画名称、持续时间、填充模式、延迟时间等。

.element {
  animation-name: fadeIn;
  animation-duration: 2s;
  animation-fill-mode: forwards;
  animation-delay: 1s;
}

在这个例子中,我们指定了元素应该使用 fadeIn 动画,该动画将持续2秒钟,动画结束后元素将保持最后一帧的样式,并且动画将在1秒后开始。

7.2 动画效果的高级应用

CSS3动画不仅限于简单的渐变效果,还可以创建复杂的动画序列和交互式动画。

7.2.1 复杂动画序列的构建

有时候,我们需要创建一个动画序列,比如先放大再缩小,或者让一个元素旋转并改变颜色。我们可以通过定义多个 @keyframes 规则,并在 animation 属性中使用逗号分隔的列表来实现复杂的动画序列。

@keyframes moveAndChangeColor {
  0% {
    transform: translateX(0);
    background-color: blue;
  }
  50% {
    transform: translateX(100px);
  }
  100% {
    transform: translateX(0);
    background-color: red;
  }
}

.element {
  animation-name: moveAndChangeColor;
  animation-duration: 4s;
  animation-iteration-count: infinite;
}

上面的例子创建了一个动画序列,元素先从左向右移动100像素,然后返回到初始位置,同时背景颜色从蓝色变为红色。

7.2.2 交互式动画的实现策略

交互式动画是响应用户行为而触发的动画效果,例如,当鼠标悬停在某个元素上时,该元素可能会放大或改变颜色。CSS的 :hover 伪类和JavaScript的事件监听器可以用来实现这种效果。

.element {
  transition: transform 0.5s ease, background-color 0.5s;
}

.element:hover {
  transform: scale(1.5);
  background-color: yellow;
}

在这个例子中,我们使用了 transition 属性来平滑地过渡变换和背景颜色的变化。当鼠标悬停在 .element 上时,它会立即放大1.5倍并改变背景颜色。

通过这些方法,您可以创建吸引人的动画效果,为您的网页增添活力和动态元素。在本章节中,我们介绍了动画的基础构建方法,包括 @keyframes 规则和 animation 属性的应用,以及如何使用它们来创建复杂的动画序列和交互式动画。在接下来的章节中,我们将探讨媒体查询在响应式设计中的应用,以及Flexbox布局技术在图标设计中的运用。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:CSS3是前端开发中用于设定网页视觉效果的关键语言。本主题专注于CSS3的特性如何运用于创建类似iOS风格的小图标。通过探讨CSS3的关键技术如边框半径、渐变、阴影、内容生成、动画、响应式设计和Flexbox布局,读者将学习到如何用纯CSS实现这些图标,从而提高前端开发能力并减少图片依赖。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

转载请注明出处或者链接地址:https://www.qianduange.cn//article/17714.html
标签
评论
发布的文章

javascript jQuery

2024-09-21 22:09:33

【若依】表格固定列宽

2024-09-21 22:09:30

Knockout-jQueryUI 使用指南

2024-09-21 22:09:29

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!