<style type=“text/css“>详解

本文介绍了在HTML中应用CSS样式的三种常见方法:内部引用,通过style标签在HTML头部定义样式;外部引用,利用link标签链接外部CSS文件;以及内联引用,直接在HTML元素中定义CSS样式。每种方法的特点和适用场景都有所不同,内部引用方便管理,外部引用保持页面结构清晰,内联引用则适用于特定样式需求。
type="text/css"是指定MIME类型,其中:   
  text是指对象为网页中的文本   
  css或是javascript是指当前指定的文本类型...
如果要在HTML文件中应用CSS样式,最常用的有三种方法:

1.内部引用

所谓内部引用就是运用style标签引用在同HTML页内<HEAD></HEAD>部分的css定义。
2.外部引用

外部引用就是用<link>标签引用外部CSS文件中的样式。如欲实现上述效果,可将CSS做成单独文件。不过使用这种方法引用要确保CSS文件和HTML文件的相对路径完整无误,要不然HTML文档是不会找到CSS样式的。

3.内联引用

内联引用其实就是在应用CSS样式的HTML部分直接在所做用的标签上定义CSS样式,这种方法最直接,但是缺点也最明显,最大的问题就是代码繁冗,作用域也仅仅在定义的标签的作用范围
<template> <view class="form-item"> <text class="label">作业日期</text> <cu-datetime-picker class="date-container" fields="day" placeholder="请选择作业日期" @change="timeStartChange"/> </view> <view class="form-item"> <text class="label">备注</text> <uni-easyinput type="textarea" v-model="remark" placeholder="请输入" /> </view> <view class="form-item" @click="gotoSelectPerson"> <text class="label">协助人</text> <input type="text" v-model="helper" placeholder="请选择协助人" readonly class="input-helper" @click="gotoSelectPerson" /> </view> <view class="form-item"> <view class="btn-group"> <button class="btn-select" @click="addPipeWeld">添加焊缝</button> </view> </view> <scroll-view scroll-y class="data-list" > <view v-for="(item, index) in weldingDataList" :key="index" class="data-item"> <button class="btn-close" @click="deleteWeldingRow(index)"> <text class="icon">✕</text> </button> <view class="main-content"> <view class="header-row"> <view class="info-group"> <view class="label-row"> <text>项目号:{{ item.projectNo }}</text> </view> <view class="info-row"> <text>管号: {{ item.pipeNo }}</text> <text>版本号: {{ item.pipeVersion }}</text> </view> <view class="info-row"> <text>焊缝号: {{ item.weldNo }}</text> </view> <view class="info-row" @click="handleWpsNoClick(item, index)"> <text>WPS NO: {{ item.wpsNo || &#39;无&#39; }}</text> </view> <view class="info-row"> <text>焊接方法: {{ item.weldProcess }}</text> </view> <view class="info-row"> <text>焊材规格: {{ item.weldingMatSpec }}</text> </view> <view class="info-row"> <text style="margin-top: 1rem; margin-right: -0.5rem">批号:</text> <view class="batch-selector-container"> <uni-data-select v-model="item.rootBatchNo" :localdata="rootBatchNoDataList.map(batchNo => ({ value: batchNo, text: batchNo }))" @click="() => handleRootBatchNoClick(item)" @change="(val) => handleRootBatchNoChange(val, item)" :popper="true" style="min-width: 107px; flex: 1; margin-right: 0.5rem;" /> <text style="margin: 0 0.5rem;">-</text> <uni-data-select v-model="item.fillBatchNo" :localdata="fillBatchNoDataList.map(batchNo => ({ value: batchNo, text: batchNo }))" @click="() => handleFillBatchNoClick(item)" @change="(val) => handleFillBatchNoChange(val, item)" style="min-width: 107px; flex: 1; margin-left: 0.5rem; position: relative; z-index: 100;" /> </view> </view> <view class="info-row"> <text style="margin-top: 1rem">证书号: {{ item.rootWeldCert }} - {{ item.fillWeldCert }}</text> </view> </view> <view class="btn-pipe-group"> <uni-button size="mini" type="warn" @click.stop="reportAbnormal(index)">异常上报</uni-button> </view> </view> </view> </view> </scroll-view> <view class="footer"> <button class="submit-btn" @click="submitForm">提交</button> </view> <cu-modal :visible="isShowModal" title="异常上报" @cancel="hideModal" @ok="submitModal(currentRowIndex)"> <uni-forms ref="baseForm" :modelValue="exceptionParams"> <uni-forms-item label="异常类型" required name="exceptionType" :label-width="80" style="flex: 0 0 30%;"> <uni-data-select v-model="exceptionParams.exceptionType" :localdata="formattedExceptionTypeList" /> </uni-forms-item> <uni-forms-item label="异常描述" required name="exceptionMsg" :label-width="80" style="flex: 0 0 30%;"> <uni-easyinput type="textarea" v-model="exceptionParams.exceptionMsg"/> </uni-forms-item> </uni-forms> </cu-modal> </template> <script setup> import {ref, onMounted, onActivated, computed} from &#39;vue&#39; import * as serve from &#39;@/api/modules/piping/pre/prePipeFeedBack&#39; import {useRoute} from &#39;vue-router&#39; import {useRouter} from &#39;vue-router&#39; import {getDislist} from "@/api/modules/piping/handover"; const router = useRouter() const route = useRoute() const currentRowIndex = ref(null) const weldList = ref([]) const orderNo = ref(&#39;&#39;) const workDate = ref(&#39;&#39;) const remark = ref(&#39;&#39;) const weldingDataList = ref([]) const rootBatchNoDataList = ref([]) const fillBatchNoDataList = ref([]) const currentWeldingItemIndex = ref(null) const rootCerNoList = ref([]) const fillCertNoList = ref([]) const exceptionTypeList = ref([]) const isShowModal = ref(false) const exceptionParams = ref({ exceptionType: &#39;&#39;, exceptionMsg: &#39;&#39; }) const process = ref(&#39;&#39;) const helper = ref(&#39;&#39;) const orgNo = ref(&#39;&#39;) onMounted(() => { orderNo.value = route.query.orderNo orgNo.value = route.query.orgNo weldingDataList.value = [] uni.$on(&#39;preAddPersons&#39;, (data) => { if (data && data.length > 0) { helper.value = data[0].userCode + &#39;-&#39; + data[0].userName; } uni.removeStorageSync(&#39;preAddPersons&#39;) }) uni.$on(&#39;preSelectedWeldToAdd&#39;, (data) => { const newWeldItems = data.filter(newItem => { return !weldingDataList.value.some(existingItem => existingItem.projectNo === newItem.projectNo && existingItem.pipeNo === newItem.pipeNo && existingItem.pipeVersion === newItem.pipeVersion && existingItem.weldNo === newItem.weldNo ) }).map(item => ({ ...item, rootBatchNo: &#39;&#39;, fillBatchNo: &#39;&#39;, rootWeldCert: &#39;&#39;, fillWeldCert: &#39;&#39;, rootGrade: &#39;&#39;, fillGrade: &#39;&#39; })); weldingDataList.value.push(...newWeldItems) uni.removeStorageSync(&#39;preSelectedWeldToAdd&#39;) }) uni.$on(&#39;preSelectedWpsNo&#39;, (data) => { if (Array.isArray(data) && data.length > 0 && currentWeldingItemIndex.value !== null) { const currentIndex = currentWeldingItemIndex.value if (currentIndex >= 0 && currentIndex < weldingDataList.value.length) { weldingDataList.value[currentIndex].wpsNo = data[0].wpsNo weldingDataList.value[currentIndex].weldProcess = data[0].process weldingDataList.value[currentIndex].weldingMatSpec = data[0].type weldingDataList.value[currentIndex].rootGrade = data[0].rootGrade weldingDataList.value[currentIndex].fillGrade = data[0].fillGrade } } uni.removeStorageSync(&#39;preSelectedWpsNo&#39;) }) getDislist({code: "CP_EXCEPTION_TYPE"}).then((res) => { if (res.status === 200) { exceptionTypeList.value = res.data || [] } }) }) onActivated(() => { orderNo.value = route.query.orderNo process.value = route.query.process serve.workOrderPipeDetail({orderNo: orderNo.value}).then((res) => { weldList.value = res.data }) }) const handleRootBatchNoClick = async (item) => { serve.getQcWeldMatSnDropList({grade: item.rootGrade}).then((res) => { const rootPairs = (res.data || []).map(item => ({ batchNo: item.batchNo, weldCert: item.certNo })) rootBatchNoDataList.value = rootPairs.map(p => p.batchNo) rootCerNoList.value = rootPairs console.log(rootBatchNoDataList, rootCerNoList) }) } const handleFillBatchNoClick = async (item) => { serve.getQcWeldMatSnDropList({grade: item.fillGrade}).then((res) => { const fillPairs = (res.data || []).map(item => ({ batchNo: item.batchNo, weldCert: item.certNo })) fillBatchNoDataList.value = fillPairs.map(p => p.batchNo) fillCertNoList.value = fillPairs }) } const handleRootBatchNoChange = (val, item) => { item.rootBatchNo = val const certItem = rootCerNoList.value.find(i => i.batchNo === val) item.rootWeldCert = certItem?.weldCert || &#39;&#39; } const handleFillBatchNoChange = (val, item) => { item.fillBatchNo = val const certItem = fillCertNoList.value.find(i => i.batchNo === val) item.fillWeldCert = certItem?.weldCert || &#39;&#39; } const handleWpsNoClick = (item, index) => { currentWeldingItemIndex.value = index console.log(&#39;currentWeldingItemIndex&#39;, currentWeldingItemIndex.value) uni.navigateTo({ url: &#39;/pages/piping/pre/selectWpsNo?weldId=&#39; + item.id }) } const gotoSelectPerson = () => { // 打开选择弹窗 uni.navigateTo({ url: &#39;/pages/piping/pre/selectPerson?isHelper=&#39; + &#39;Y&#39; }) } const formattedExceptionTypeList = computed(() => { return exceptionTypeList.value.map(item => { return { value: item.name, text: item.name } }) }) const addPipeWeld = () => { uni.navigateTo({ url: &#39;/pages/piping/pre/selectWeld?orderNo=&#39; + orderNo.value }) } const timeStartChange = (value) => { if (value) { workDate.value = `${value.YYYY}-${value.MM}-${value.DD}` console.log(&#39;workDate&#39;, workDate.value) } } const deleteWeldingRow = (index) => { weldingDataList.value.splice(index, 1) } const reportAbnormal = (index) => { exceptionParams.value ={ exceptionType: &#39;&#39;, exceptionMsg: &#39;&#39; } currentRowIndex.value = index isShowModal.value = true } const hideModal = () => { isShowModal.value = false } const submitModal = (index) => { const item = weldingDataList.value[index]; const params = exceptionParams.value; if (!params.exceptionType) { uni.showToast({ title: &#39;请选择异常类型&#39;, icon: &#39;none&#39; }); return; } if (!params.exceptionMsg) { uni.showToast({ title: &#39;请输入异常描述&#39;, icon: &#39;none&#39; }); return; } const submitData = [{ projectNo: item.projectNo, orgNo: orgNo.value, bomNo: item.pipeNo, bomVersion: item.pipeVersion, exceptionType: params.exceptionType, exceptionMsg: params.exceptionMsg }] serve.saveException(submitData).then(res => { uni.showToast({ title: &#39;提交成功&#39;, icon: &#39;success&#39; }) isShowModal.value = false }).catch(err => { uni.showToast({ title: &#39;提交失败&#39;, icon: &#39;none&#39; }); console.error(&#39;提交异常:&#39;, err); }) } const submitForm = () => { if (!workDate.value) { uni.showToast({title: &#39;请输入作业日期&#39;, icon: &#39;none&#39;}) return } if (!weldingDataList.value && weldingDataList.value.length == 0) { uni.showToast({title: &#39;请选择焊缝&#39;, icon: &#39;none&#39;}) return } const data = { orderNo: orderNo.value, process: process.value, workDate: workDate.value, remark: remark.value, helperNo: helper.value.split(&#39;-&#39;)[0], weldList: weldingDataList.value } serve.weldingFeedback(data).then((res) => { if (res.status === 200) { uni.showToast({title: &#39;提交成功&#39;, icon: &#39;none&#39;}) setTimeout(() => { uni.navigateBack() }, 1000) } }) } </script> <style scoped lang="scss"> .data-list { background-color: #f9f9f9; border-radius: 8rpx; margin-bottom: 40rpx; max-height: 950rpx; overflow-y: auto; } .data-item { margin-bottom: 20rpx; background-color: white; border-radius: 6rpx; padding: 20rpx; position: relative; /* 确保相对定位,使绝对定位的叉号正确显示 */ } .btn-pipe-container { display: flex; justify-content: flex-end; } .btn-pipe-group { display: flex; flex-direction: column; align-items: flex-end; gap: 8px; } .btn-group { display: flex; } .main-content { padding-top: 40rpx; } .header-row { display: flex; justify-content: space-between; align-items: flex-start; /* 顶部对齐 */ position: relative; } .info-group { flex: 1; } .label-row { display: flex; gap: 20rpx; font-size: 24rpx; color: #666; flex-wrap: wrap; margin-bottom: 5rpx; } .info-row { display: flex; gap: 20rpx; font-size: 24rpx; color: #333; } .form-item { display: flex; align-items: center; margin-bottom: 50rpx; } .label { width: 160rpx; font-size: 28rpx; color: #333; } .date-container { margin-top: 0.7rem; height: 60rpx; font-size: 28rpx; } .btn-group { display: flex; gap: 20rpx; } .btn-select, .btn-add, .btn-view { font-size: 24rpx; margin-left: 20rpx; } .btn-select { background-color: #007aff; color: #f0f0f0; } .btn-add { background-color: #007aff; color: #f0f0f0; } .btn-close { position: absolute; top: 0; right: 0; width: 30rpx; height: 30rpx; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 20rpx; color: #999; border: none; margin: 5rpx; } .btn-view { background-color: #007aff; color: #f0f0f0; } .footer { position: fixed; bottom: 0; left: 0; right: 0; background-color: #fff; box-shadow: 0 -2rpx 10rpx rgba(0, 0, 0, 0.1); } .submit-btn { background-color: #007aff; color: white; border: none; font-size: 28rpx; width: 100%; } .batch-selector-container{ display: flex; align-items: center; margin-top: 0.5rem; } </style> 其中: <view class="main-content"> <view class="header-row"> <view class="info-group"> <view class="label-row"> <text>项目号:{{ item.projectNo }}</text> </view> <view class="info-row"> <text>管号: {{ item.pipeNo }}</text> <text>版本号: {{ item.pipeVersion }}</text> </view> <view class="info-row"> <text>焊缝号: {{ item.weldNo }}</text> </view> <view class="info-row" @click="handleWpsNoClick(item, index)"> <text>WPS NO: {{ item.wpsNo || &#39;无&#39; }}</text> </view> <view class="info-row"> <text>焊接方法: {{ item.weldProcess }}</text> </view> <view class="info-row"> <text>焊材规格: {{ item.weldingMatSpec }}</text> </view> <view class="info-row"> <text style="margin-top: 1rem; margin-right: -0.5rem">批号:</text> <view class="batch-selector-container"> <uni-data-select v-model="item.rootBatchNo" :localdata="rootBatchNoDataList.map(batchNo => ({ value: batchNo, text: batchNo }))" @click="() => handleRootBatchNoClick(item)" @change="(val) => handleRootBatchNoChange(val, item)" :popper="true" style="min-width: 107px; flex: 1; margin-right: 0.5rem;" /> <text style="margin: 0 0.5rem;">-</text> <uni-data-select v-model="item.fillBatchNo" :localdata="fillBatchNoDataList.map(batchNo => ({ value: batchNo, text: batchNo }))" @click="() => handleFillBatchNoClick(item)" @change="(val) => handleFillBatchNoChange(val, item)" style="min-width: 107px; flex: 1; margin-left: 0.5rem; position: relative; z-index: 100;" /> </view> </view> <view class="info-row"> <text style="margin-top: 1rem">证书号: {{ item.rootWeldCert }} - {{ item.fillWeldCert }}</text> </view> </view> <view class="btn-pipe-group"> <uni-button size="mini" type="warn" @click.stop="reportAbnormal(index)">异常上报</uni-button> </view> </view> </view> 其中批号的两个选择改变一下,变成从底下弹窗,然后进行选择
最新发布
10-22
<!-- $Id: group_buy_info.htm 14216 2015-02-10 02:27:21Z derek $ --> {include file="pageheader.htm"} {insert_scripts files="../js/utils.js"} <script type="text/javascript" src="../js/jquery-1.6.2.min.js"></script> <script type="text/javascript" src="../js/calendar.php?lang={$cfg_lang}"></script> <link href="../js/calendar/calendar.css" rel="stylesheet" type="text/css" /> <script type="text/javascript" src="./js/validate/jquery.validate.js"></script> <script type="text/javascript" src="./js/validate/messages_zh.js"></script> <script type="text/javascript" src="./js/validator.js"></script> <style type="text/css"> label.error { color: red; background: url(./images/warning_small.gif) no-repeat; padding-left: 18px; } label.success { background: url(./images/yes.gif) no-repeat; padding-left: 18px; } #btn_visit{ background: #24a0d6 none repeat scroll 0 0; border: medium none; color: #fff; cursor: pointer; margin: 2px; padding: 7px 15px; } </style> <form id="form1" method="post" action="chat_settings.php" name="theForm"> <input type="hidden" id="act" name="act" value="post"> <div class="main-div"> <table id="group-table" cellspacing="1" cellpadding="3" width="100%"> <tr> <td class="label">{$lang.label_chat_server_ip}</td> <td> <input type="text" id="chat_server_ip" name="chat_server_ip" value="{$chat.chat_server_ip}" class="required" /> </td> </tr> <tr> <td class="label">{$lang.label_chat_server_port}</td> <td> <input type="text" id="chat_server_port" name="chat_server_port" value="{$chat.chat_server_port}" class="required" /> </td> </tr> <tr> <td class="label">{$lang.label_chat_http_bind_port}</td> <td> <input type="text" id="chat_http_bind_port" name="chat_http_bind_port" value="{$chat.chat_http_bind_port}" class="required" /> </td> </tr> <tr> <td class="label">{$lang.label_chat_server_admin_username}</td> <td> <input type="text" id="chat_server_admin_username" name="chat_server_admin_username" value="{$chat.chat_server_admin_username}" class="required" /> </td> </tr> <tr> <td class="label">{$lang.label_chat_server_admin_password}</td> <td> <input type="password" id="chat_server_admin_password" name="chat_server_admin_password" value="" class="{if $password_empty == 1 } required {/if}" /> <!-- {if $password_empty == 0} --> <div style="margin-left: 5px;">留空则不更新</div> <!-- {/if} --> </td> </tr> <tr> <td class="label">{$lang.label_chat_server_admin_repassword}</td> <td> <input type="password" id="chat_server_admin_repassword" name="chat_server_admin_repassword" value="{$chat.chat_server_admin_repassword}" class="" /> </td> </tr> <!-- <tr> <td class="label">{$lang.label_chat_server_timout}</td> <td> <input type="text" id="chat_server_timout" name="chat_server_timout" value="{$chat.chat_server_timout}" class="required" /> </td> </tr> --> <tr> <td class="label"> </td> <td> <input name="act_id" type="hidden" id="act_id" value="{$customer.act_id}"> <input type="button" id="btn_submit" name="btn_submit" value="{$lang.button_submit}" class="button" /> <a id="btn_visit" href="javascript:;" target="_blank" style="margin-left: 10px;">{$lang.visit_openfire}</a> </td> </tr> </table> </div> </form> <script language="JavaScript">{literal} $().ready(function(){ $.validator.addMethod("ip", function(value, element) { var ip = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/; return this.optional(element) || (ip.test(value) && (RegExp.$1 < 256 && RegExp.$2 < 256 && RegExp.$3 < 256 && RegExp.$4 < 256)); }, "Ip地址格式错误"); var validator = $("#form1").validate({ debug: false, rules: { chat_server_ip: { required: true, ip: true }, chat_server_port: { required: true, range: [0, 65535] }, chat_http_bind_port: { required: true, range: [0, 65535] }, chat_server_admin_repassword: { equalTo: "#chat_server_admin_password" } }, messages: { chat_server_ip: { required: "IP地址不能为空", ip: "IP地址格式不正确" }, chat_server_port: { required: "端口号不能为空", range: "请输入 0 至 65535 之间的有效的端口号" }, chat_http_bind_port: { required: "HTTP-BIND端口号不能为空", range: "请输入 0 至 65535 之间的有效的端口号" }, chat_server_admin_username: { required: "聊天服务器管理员登录账户不能为空" }, chat_server_admin_password: { required: "聊天服务器管理员登录密码不能为空" }, chat_server_admin_repassword: { required: "确认密码不能为空", equalTo: "两次输入的密码不一样,请重新输入" } }, errorPlacement: function(error, element) { error.appendTo(element.parent()); } }); $("#btn_submit").click(function(){ if(!validator.form()){ return false; } $("#form1").submit(); return false; }); $("#btn_visit").click(function(){ var ip = $("#chat_server_ip").val(); var port = $("#chat_server_port").val(); $(this).attr("href", "http://"+ip+":"+port+"/"); }); }); //--> {/literal} </script> {include file="pagefooter.htm"}
10-02
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超翔之逸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值