html怎么制作图片按钮效果,如何制作一个漂亮的 CSS 按钮

50663128_1.jpg

如今 Web Application 横行,在 Web 2.0 网站的各种设计元素中,按钮是无法或缺的。如何用最简洁的方法制作最漂亮的按钮就成为了一个问题。本文讲述的方法,代码上简洁,符合 XHTML 标准,不需要 Javascript,只需要纯 CSS 即可完成,而且通用性很好,使用起来也很方便。上图即为最终成品的例子,下面我将详述整个制作过程,相信通过这个教程您肯定可以学会。

第一步:准备图片

50663128_2.jpg

对于一个好的 UI,一个很重要的方面就是要能及时的与用户发生交互。对于按钮来说,我们需要让按钮相应各种鼠标事件,让用户知道它是可以按下的。如上图,我们要制作的按钮共有三种状态:正常状态、鼠标划过、鼠标按下。通常情况下,我们会想到利用 onclick、onmouseover 这样的事件来控制,而事实上,我们完全可以利用通用性、便捷性更好的 CSS 代替 Javascript 来完成这个过程。尽可能将表现的事情交给 CSS 来做,这也是良好设计的原则之一。

为了能够实现这种效果,我们需要准备三个状态的图片。利用 CSS 的 background-position 属性,我们完全可以将三种状态的图片放在一张图片中,这样可以获得更好的缓存效果。

此外,按钮两侧的圆角也是比较烦人的问题。因为我们要制作的按钮需要能够自动适应内部文字的长度,因此我们需要应用一种叫做“拉门技术 (Sliding door technique)”的 CSS 技巧。具体原理不讲了,这里只介绍具体做法:

我们使用超链接来生成按钮,为了使用 Sliding door technique,我们需要按照如下方式书写 HTML 代码:

Button Text

随后,我们需要准备两张图片,作为按钮的背景(分别为 span 标签和 a 标签的),具体示意图如下:

50663128_3.jpg

这里需要指出,280px 并不是绝对的,它代表了这个按钮在您的应用中可能用到的最大值。此外,所有的值都可以根据您实际的背景图做出更改。

第二步:书写 CSS 代码

为了能够让 A 标签准确的显示我们需要的效果,我们需要设定其 display 属性为 block,但是,很多情况下,我们需要在同一行中显示多个按钮,我们可以通过设定 float:left 或 float:right 来达到。提醒一下,这样设定後,当您放置完按钮后不要忘记 clear 一下

50663128_4.gif

首先看看显示基本布局的代码,本例中,两侧圆角部分为 10px,按钮高度为 24px,保留区域为 1px:

a.button{

background:transparenturl(a.gif)no-repeatscrollrighttop;

color:White;

display:block;

float:left;

height:24px;

padding-right:10px;

font:normal12pxsans-serif;

margin-right:10px;

text-decoration:none;

}

a.buttonspan{

background:transparenturl(span.gif)no-repeat;

display:block;

padding:5px1px5px11px;

line-height:14px;

}

这里需要指出的是:1. 保留区 (1px) 是包含在 SPAN 中的,具体可以注意看 padding 的设置;2. SPAN 的 line-height + padding-top + padding-bottom = A 的 height。

经过这样设定后,我们的按钮的基本样式就完成了,但它还没有交互效果,我们通过设定 a:hover 和 a:active 来实现:

a.button:hover{

background-position:right-24px;

}

a.button:hoverspan{

background-position:left-24px;

}

a.button:active{

background-position:right-48px;

}

a.button:activespan{

background-position:left-48px;

padding:6px04px12px;

}

我们看到,主要是应用了 background-position 属性调整背景图片的位置,这比使用多张图片效果更好。在 a.button:active span 中,我们重新设定了 padding 的值,使字符向右下方移动 1px,按下的效果更明显,这也是之前提到的保留区的作用。

第三部:最后完善

其实做完上面两部,我们的按钮基本上已经完工了。但是在各种浏览器中都有一个讨厌的问题,就是当超链接被点击后,会留下一个讨厌的虚线框。这个破坏美观的东西,我们当然要干掉它。

Firefox、Safari 等支持 W3C CSS2 的浏览器,可以通过设定 CSS 的 outline 属性来做到这一点。在我们这个例子中,只需做如下改动:

a.button:active{

background-position:right-48px;

outline:none;

}

在 Firefox 中看看,虚框已经消失了。

但 Internet Explore 不吃这一套,对付它就比较麻烦了,单单 CSS 无法解决问题,需要从 HTML 下手。我们需要将按钮的 HTML 代码改为以下形式:

Button Text

这样,我们可以让超链接在点击后迅速失去焦点,从而避免虚框的出现。当然,如果我们应用中按钮比较少,这个方法还不错。但按钮比较多的情况下,我们还是应该用 DOM 方法来为 className 为 button 的 A 修改 onclick 事件(用 jQuery 或 Prototype 实现会很省心),不过这不在本文讨论的范围内了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,我可以回答这个问题。以下是一个简单的图片上传界面的 HTMLCSS 代码示例: HTML 代码: ``` <div class="upload-container"> <label for="file-upload" class="upload-label">选择图片</label> <input id="file-upload" type="file" accept="image/*"> <div class="upload-preview"></div> </div> ``` CSS 代码: ``` .upload-container { display: flex; flex-direction: column; align-items: center; } .upload-label { padding: 10px 20px; background-color: #007bff; color: #fff; border-radius: 5px; cursor: pointer; font-size: 16px; margin-bottom: 20px; } #file-upload { display: none; } .upload-preview { width: 300px; height: 300px; border: 2px dashed #ccc; margin-bottom: 20px; background-size: cover; background-position: center; background-repeat: no-repeat; } ``` 这段代码会创建一个包含一个选择文件按钮一个预览框的容器。当用户选择一个图片文件后,预览框会显示所选图片的缩略图。这个界面可以根据需要进行修改和美化。 ### 回答2: 当然!下面是一个简单的例子,展示了如何使用HTMLCSS创建一个漂亮图片上传界面。 HTML代码如下: ``` <!DOCTYPE html> <html> <head> <title>图片上传界面</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <div class="container"> <h1>图片上传</h1> <form> <label for="file-input"> <img src="placeholder.png" id="preview" alt="预览图片"> <span>选择图片</span> </label> <input type="file" id="file-input" accept="image/*"/> <button type="submit">上传</button> </form> </div> </body> </html> ``` CSS代码(保存为style.css文件)如下: ``` body { font-family: Arial, sans-serif; background-color: #f1f1f1; } .container { max-width: 400px; margin: 0 auto; padding: 20px; background-color: #ffffff; border: 1px solid #dddddd; border-radius: 5px; } h1 { text-align: center; } form { display: flex; flex-direction: column; align-items: center; } label { display: flex; flex-direction: column; align-items: center; margin-top: 20px; } img { width: 200px; height: 200px; object-fit: contain; border: 1px solid #dddddd; border-radius: 5px; } input[type="file"] { display: none; } span { font-size: 16px; color: #555555; margin-top: 10px; cursor: pointer; } button { padding: 10px 20px; margin-top: 20px; background-color: #4caf50; border: none; color: #ffffff; font-size: 16px; cursor: pointer; border-radius: 5px; } button:hover { background-color: #45a049; } ``` 在这个示例中,我们创建了一个包含一个标题、一个图片预览、一个文件选择器和一个提交按钮的容器。点击输入框时,会弹出文件选择窗口,选择图片后,图片将显示在预览区域。用户可以通过提交按钮图片上传到服务器。 你可以将上述代码复制到一个HTML文件中,并将CSS代码保存为style.css,然后通过浏览器打开HTML文件,即可看到漂亮图片上传界面。记得将文件名和路径正确地指定到图片CSS文件。如果需要修改样式,你可以根据自己的喜好调整CSS代码。 ### 回答3: 当然可以帮你设计一个漂亮图片上传界面。以下是一个使用HTMLCSS编写的简单示例: HTML部分: ```html <!DOCTYPE html> <html> <head> <title>图片上传界面</title> <link rel="stylesheet" type="text/css" href="style.css"> <!-- 引入样式表 --> </head> <body> <div class="container"> <h1>图片上传</h1> <form action="upload.php" method="post" enctype="multipart/form-data"> <div class="upload-area"> <input type="file" name="file" id="file" class="inputfile" /> <label for="file">选择图片</label> </div> <input type="submit" value="上传" class="submit-button"> </form> </div> </body> </html> ``` CSS部分(style.css): ```css .container { width: 300px; margin: auto; text-align: center; } h1 { font-size: 24px; margin-bottom: 20px; } .upload-area { background-color: #eee; padding: 20px; margin-bottom: 20px; } .inputfile { display: none; } label { background-color: #4CAF50; color: white; padding: 10px 20px; cursor: pointer; } .submit-button { background-color: #4CAF50; color: white; padding: 10px 20px; border: none; cursor: pointer; font-size: 16px; } .submit-button:hover { background-color: #45a049; } ``` 以上代码实现了一个简单的图片上传界面。包括一个标题、一个文件选择区域和一个上传按钮。文件选择区域在点击时触发文件选择对话框。上传按钮用于提交表单。 你可以根据自己的需求进行进一步的美化和定制,例如更改颜色、添加背景图像等。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值