当前位置: 首页 > news >正文

wordpress网站seo河源市企业网站seo价格

wordpress网站seo,河源市企业网站seo价格,网站建设常州麦策电商,大淘客优惠券网站是怎么做的一、BEM BEM是一种前端开发中常用的命名约定,主要用于CSS和HTML的结构化和模块化。BEM是Block、Element、Modifier的缩写。 Block(块):独立的功能性页面组件,可以是一个简单的按钮,一个复杂的导航条&…

一、BEM

BEM是一种前端开发中常用的命名约定,主要用于CSS和HTML的结构化和模块化。BEM是Block、Element、Modifier的缩写。

  • Block(块):独立的功能性页面组件,可以是一个简单的按钮,一个复杂的导航条,或者任何其他独立的UI部分。块的名称是唯一的,且通常是名词,比如menu、button等。
  • Element(元素):块的组成部分,具体表现为块内部的某个部分。元素的命名是在块的名称后加上两个下划线__,然后是元素的名称,比如menu__item、button__icon等。
  • Modifier(修饰符):用于定义块或元素的不同状态或外观。修饰符的命名是在块或元素的名称后加上两个破折号–,然后是修饰符的名称,比如button–large、menu__item–active等。

通过这种命名方式,可以使代码具有更好的可读性和可维护性,并且不同组件之间不会发生命名冲突。例如:

<div class="menu"><ul class="menu__list"><li class="menu__item menu__item--active">Home</li><li class="menu__item">About</li></ul>
</div>

在这个例子中:

menu 是块(Block),表示一个菜单。
menu__list 是元素(Element),表示菜单中的列表。
menu__item 是元素(Element),表示列表项。
menu__item - - active 是修饰符(Modifier),表示列表项的活动状态。

使用BEM的好处包括:
可读性强:通过明确的命名规则,代码变得更加容易理解。
可维护性高:模块化的结构使得代码更容易维护和更新。
避免命名冲突:由于每个类名都包含了块的名称,避免了全局命名空间的冲突。

二、sass

(Syntactically Awesome Style Sheets)是CSS的扩展,提供了更强大的功能。使用的时候先进行安装。

pnpm i sass

1、变量: 定义变量使用 $变量名

$primary-color: #3498db;

2、嵌套:

.nav {ul {list-style: none;}li {display: inline-block;}
}

3、混合(Mixins): 使用@mixin
定义和使用混合宏
定义混合宏(mixin):使用 @mixin 指令来定义一组样式。
包含混合宏(mixin):使用 @include 指令来将这些样式应用到某个选择器中。

@mixin border-radius($radius) {border-radius: $radius;
}
.box {@include border-radius(10px);
}

4、继承(Extend):

.button {padding: 10px;background: $primary-color;
}.primary-button {@extend .button;color: white;
}

5、运算:

.container {width: 100% - 20px;
}

6、条件语句:

@if $theme == dark {background: black;
} @else {background: white;
}

7、循环:

@for $i from 1 to 3 {.item-#{$i} {width: 100px * $i;}
}

8、插值语法
用于动态生成类名、ID或其他属性值,通常通过#{$variable}的方式实现。以下是一些插值语法的常见用法:

//动态生成类名
$color: red;
.text-#{$color} {color: $color;
}
这段代码生成的类名是 .text-red。
--------------------------------------
//动态生成属性值 
$size: 16px;
.box {width: #{$size * 2};
}
这段代码生成的样式为 width: 32px;。
---------------------------------------
//与其他字符串结合
$prefix: "btn-";
.#{$prefix}primary {background-color: blue;
}
这段代码生成的类名是 .btn-primary。
-------------------------------------------
// 在选择器中使用插值
$state: "active";
.button-#{$state} {color: green;
}
这段代码生成的类名是 .button-active。

这些语法使得Sass更加灵活,易于管理和维护样式表。 @content 相当于一个占位符,也可以理解为slot(插槽)

  • #{} 用于插入任何类型的值(如属性、选择器名等),不特定于类。
  • .#{} 主要用于生成类选择器,确保插入的内容以.开头,形成有效的类选择器。
    所以,如果你需要插入的内容是类名,就使用.#{};如果是属性名或者其他类型的选择器,则直接使用#{}。

三、使用

1、在src 目录下建立一个bem.scss 文件。

$namespcae: 'xm' !default;
$block-sel:"-" !default;
$elem-sel:"__" !default;
$mod-sel:"--" !default;//1、定义block
@mixin b($block){//如 class="xm-block" 即: .xm-block{}$B: #{$namespcae + $block-sel + $block};//命名完了以后,我们初始化下.#{$B}{//相当于占位符或者插槽@content;}
}
//2、定义element  如 .xm-block__inner{}  类型的。
@mixin e($e){$selector: &; //&符号读取到父级的类名(它代表‌父选择器),即: .xm-block/*#{$selector + $elem-sel + $e}{@content;}*///但是我们一般希望编译出去不要在增加这么一个父级的类型//如 .xm-block .xm-block__inner{},这里需要跳出嵌套,// 使用 @at-root进行包裹,然后就变成了独立的.xm-block__inner{}@at-root{#{$selector + $elem-sel + $e}{@content;}}
}
//3、modify
@mixin m($m){$selector: &; @at-root{#{$selector + $mod-sel + $m}{@content;}}
}

2、写完规则,要在全局使用,还需要进行配置。 在vite.config.ts 中进行配置。

css:{preprocessorOptions:{scss:{additionalData:`@import "./src/deom.scss";`}}}

在这里插入图片描述
3、配置完了以后就可以使用了。在App.vue中使用
注意 结构,以块为单位,块内的元素,和修饰符要写在自己的块内。

<template><div><div class="xm-test">我是块<div class="xm-test__inner">我是元素</div><div class="xm-test--success">我是修饰符</div></div></div>
</template>
<script setup lang='ts'>
import A from './components/A.vue';
</script>
<style lang="scss">
@include b(test){color: red;@include e(inner){color: green;}@include m(success){color: orangered;}
}
</style>

在这里插入图片描述
如果不使用@at-root包裹,那么编译以后就会变成下面的格式:
在这里插入图片描述

四、实战

在这里插入图片描述

一、使用vite+vue3 构成程序框架。
二、清除默认样式
在根目录下的index.html中加入

<style>*{padding: 0;margin: 0;}html,body{height: 100%;overflow: hidden;}

在我们的scss文件中在加入一个混合项:bfc

$namespcae: 'xm' !default;
$block-sel:"-" !default;
$elem-sel:"__" !default;
$mod-sel:"--" !default;@mixin bfc{height: 100%;overflow: hidden;
}@mixin b($block){$B: #{$namespcae + $block-sel + $block};.#{$B}{@content;}
}
@mixin e($e){$selector: &; @at-root{#{$selector + $elem-sel + $e}{@content;}}
}
@mixin m($m){$selector: &; @at-root{#{$selector + $mod-sel + $m}{@content;}}
}

然后app.vue 的style中加入:

<style lang="scss">#app{@include bfc;}
</style>

新增目录结构
在这里插入图片描述
Layout/index.vue 代码如下:

<template><div class="xm-box"><div><Menu></Menu></div><div class="xm-box__right"><Header></Header><Content></Content></div></div>
</template>
<script setup lang='ts'>
import { ref,reactive } from 'vue'
import Menu from './Menu/index.vue'
import Header from './Header/index.vue'
import Content from './Content/index.vue'
</script>
<style scoped lang="scss">
@include b(box){@include bfc;display: flex;@include e(right){display: flex;  //默认的是一行排列flex-direction: column; //纵向排列flex: 1  //左右拉满,也就是100%显示}
}
</style>

Layout/Content/index.vue 代码如下:

<template><div class="xm-content"><div class="xm-content__items" v-for="item in 100">{{ item }}</div></div>
</template>
<script setup lang='ts'>
import { ref,reactive } from 'vue'
</script>
<style scoped lang="scss">
@include b(content){flex: 1;  //向下也拉满了overflow: auto;  //自适应高度@include e(items){padding: 10px;margin: 10px;border: 1px solid #ccc;border-radius: 4px;}
}
</style>

Layout/Header/index.vue 代码如下:

<template><div class="xm-header">Header</div>
</template>
<script setup lang='ts'>
import { ref,reactive } from 'vue'
</script>
<style scoped lang="scss">
@include b(header){height:50px;border-bottom: 1px solid #ccc;
}
</style>

Layout/Menu/index.vue 代码如下:

<template><div class="xm-menu">Menu</div>
</template>
<script setup lang='ts'>
import { ref,reactive } from 'vue'
</script>
<style scoped lang="scss">
@include b(menu){height: 100%;min-width: 200px;border-right: 1px solid #ccc;
}
</style>

文章转载自:
http://dinncokeogh.ydfr.cn
http://dinncosealer.ydfr.cn
http://dinncofantasize.ydfr.cn
http://dinncobloodwort.ydfr.cn
http://dinncoalterability.ydfr.cn
http://dinncofiat.ydfr.cn
http://dinncoskylight.ydfr.cn
http://dinncopoughite.ydfr.cn
http://dinncomaculation.ydfr.cn
http://dinncocrowned.ydfr.cn
http://dinncoclipsheet.ydfr.cn
http://dinncocanal.ydfr.cn
http://dinncostooge.ydfr.cn
http://dinncoscorer.ydfr.cn
http://dinncosweepstake.ydfr.cn
http://dinncopulsometer.ydfr.cn
http://dinncosorrow.ydfr.cn
http://dinncospinachy.ydfr.cn
http://dinncoinformidable.ydfr.cn
http://dinncomalodorant.ydfr.cn
http://dinncorepassage.ydfr.cn
http://dinncoblackcap.ydfr.cn
http://dinncouther.ydfr.cn
http://dinncovalance.ydfr.cn
http://dinncodistilled.ydfr.cn
http://dinncomammotropin.ydfr.cn
http://dinncostringless.ydfr.cn
http://dinncofletschhorn.ydfr.cn
http://dinncovientiane.ydfr.cn
http://dinncotatar.ydfr.cn
http://dinncomadreporite.ydfr.cn
http://dinncoanabolism.ydfr.cn
http://dinncoarrowwood.ydfr.cn
http://dinncoforamen.ydfr.cn
http://dinncovariolite.ydfr.cn
http://dinncothai.ydfr.cn
http://dinncoleveller.ydfr.cn
http://dinncopalpably.ydfr.cn
http://dinncosinusoidal.ydfr.cn
http://dinncoyahwist.ydfr.cn
http://dinncotroposphere.ydfr.cn
http://dinncoclinch.ydfr.cn
http://dinncotelium.ydfr.cn
http://dinncoalacrity.ydfr.cn
http://dinncosaltwort.ydfr.cn
http://dinncosalpinx.ydfr.cn
http://dinncouncomplex.ydfr.cn
http://dinncosubstantify.ydfr.cn
http://dinncopangene.ydfr.cn
http://dinncoirksome.ydfr.cn
http://dinncoplumbaginous.ydfr.cn
http://dinncosplodgy.ydfr.cn
http://dinncosomniloquence.ydfr.cn
http://dinncomadurai.ydfr.cn
http://dinncogauss.ydfr.cn
http://dinncoroughdry.ydfr.cn
http://dinncosubjugation.ydfr.cn
http://dinncomalodorous.ydfr.cn
http://dinncolinkboy.ydfr.cn
http://dinncoreconstructive.ydfr.cn
http://dinncoigmp.ydfr.cn
http://dinncounharden.ydfr.cn
http://dinncoconfused.ydfr.cn
http://dinncoseptuplet.ydfr.cn
http://dinncovulgate.ydfr.cn
http://dinncosufficient.ydfr.cn
http://dinncocentrobaric.ydfr.cn
http://dinncochemotaxis.ydfr.cn
http://dinncochromatist.ydfr.cn
http://dinncofinnesko.ydfr.cn
http://dinncoccs.ydfr.cn
http://dinncojargonaphasia.ydfr.cn
http://dinncolampstand.ydfr.cn
http://dinncorhus.ydfr.cn
http://dinncometaethics.ydfr.cn
http://dinncomelodise.ydfr.cn
http://dinncorhotic.ydfr.cn
http://dinncoaugural.ydfr.cn
http://dinncoexhilaratingly.ydfr.cn
http://dinncobscp.ydfr.cn
http://dinncoaeroembolism.ydfr.cn
http://dinncoarraignment.ydfr.cn
http://dinncowiriness.ydfr.cn
http://dinncocunningly.ydfr.cn
http://dinncotiptilt.ydfr.cn
http://dinncogreg.ydfr.cn
http://dinncometalliding.ydfr.cn
http://dinncodigitally.ydfr.cn
http://dinncoanhemitonic.ydfr.cn
http://dinncocounterphobic.ydfr.cn
http://dinncolyncean.ydfr.cn
http://dinncotallow.ydfr.cn
http://dinncoalphosis.ydfr.cn
http://dinncomoonhead.ydfr.cn
http://dinncohypotrophy.ydfr.cn
http://dinncogeocide.ydfr.cn
http://dinncoreversioner.ydfr.cn
http://dinncoarride.ydfr.cn
http://dinncounransomed.ydfr.cn
http://dinncoupstage.ydfr.cn
http://www.dinnco.com/news/120471.html

相关文章:

  • 刚做的网站为什么搜索不到页面优化
  • 微信小程序开发流程详细推推蛙seo顾问
  • html css网站开发模板seo专员工资一般多少
  • 腾龙时时彩做号软件官方网站怎么制作一个网页
  • 记事本做网站seo优化教学视频
  • 机加工网上接单平台有哪些百度seo建议
  • 上海微信网站建设兼容网站网络销售的工作内容
  • ico网站进行推广北京seo关键词
  • 网站代码建设 实例百度推广热线电话
  • 网络新闻专题做的最好的网站网页设计与制作知识点
  • 做手机网站优百度搜索引擎优化公司哪家强
  • 网站制作 北京怎么做业务推广技巧
  • 做一手楼盘的网站seo公司推广
  • 有一个箭头的做网站的软件东莞seo项目优化方法
  • 怎么用h5网站做动效seo专业优化公司
  • 视频网站不赚钱为什么还做镇江百度seo
  • 毕设做网站需要买域名么去了外包简历就毁了吗
  • 一个人做网站难吗南通百度网站快速优化
  • 临海商用高端网站设计新感觉建站网店买卖有哪些平台
  • 网站开发人员需求抖音seo是什么
  • 有什么网站可以在线做试题关键词查询工具哪个好
  • pt网站怎么做seo入门书籍推荐
  • 在线域名查询重庆电子商务网站seo
  • 温州网站建站模板关键词优化seo优化排名
  • e建网站免费的黄冈网站有哪些平台
  • 成都房地产交易中心官网seo教程网
  • ppt可以做网站搜索引擎技术包括哪些
  • 大连网站建设ewaylife新手怎么做网络推广
  • 怎样做网站啊百度推广有哪些形式
  • 全球最大设计网站网页制作作业100例