Laravel使用构建flash消息组件虚拟用户.js和顺风CSS

在本教程中,我将介绍如何使用虚拟用户.js还有尾风。我将在一个全新的Laravel 5.8项目中使用它,但是您可以将它调整为在任何运行的项目中使用虚拟用户.js我们构建的组件将有一个\"危险\"主题和一个\"成功\"主题。您可以选择使用\"警告\"主题或任何其他您认为合适的主题来扩展它。先决条件n这是一个中间教程,因此我不打算介绍虚拟用户.js以及TailwindCSS或如何在项目中设置它们。我假设你已经按照他们的文件做了。我还删除了resources/js/app.js文件中的所有样板JavaScript,除了以下内容:n24el: \"#app\",5});n在我的routes/web.php文件中,我从以下内容开始:n1 3> 5 6 7{{ config(\"app.name\", \"Laravel\") }} 8>1112151617让我们开始n开始,让我们创建flash消息组件并将其注册到resources/js/app.js文件中。n23Vue.component(\"flash-message\", require(\"./components/FlashMessage.vue\").default);46el: \"#app\",7});n接下来,我们需要在欢迎视图中包含该组件,以便它显示在页面上。我通常将其插入到#app div底部附近。我们希望此组件安装在任何可能使用它的页面上。n345设置组件样式n让我们使用TailwindCSS完成一些基本样式设置。在设置组件样式时,我将使用静态消息和我们的\"危险\"主题,但稍后会有变量选项。下面的标记将把组件放在屏幕的右上角,在组件的右上角添加一个关闭图标,并提供一些像样的样式。n 1> 3
> 6> 713Oops! Something terrible happened...14
151617n使类和文本动态n如果您将bg-red-200 text-red-900类替换为bg-green-200 text-green-900,您将看到我们的基本\"成功\"样式。让我们根据组件上的message属性更改类和消息文本。我们需要在组件的底部添加以下内容:n 1> 3
5\"bg-red-200 text-red-900\":message.type===\"error\", 6\"bg-green-200 text-green-900\":message.type===\"success\", 7}\">>10>1114×1517{{ message.text }}18
192021222324export default {25data() {26return {27message: {28text: \"Hey! Something awesome happened.\",29type: \"success\",30},31};32},33};34n与组件通信现在,我想找到一种从组件外部设置消息的方法。我认为一个简单的Vue事件总线将非常适合这个目的。为此,我们需要将resources/js/app.js文件更新为以下内容:n34Vue.component(\"flash-message\", require(\"./components/FlashMessage.vue\").default);57el: \"#app\",8});n您以前可能在Vue组件中使用过自定义事件。我们将使用类似的语法来发出和侦听全局级别的事件:Bus.$emit(\"flash-message\")和Bus.$on(\"flash-message\")。现在我们已经设置了事件总线,让我们根据message属性有条件地呈现组件。我们可以通过在flash消息中添加一个v-if并将default message属性设置为null来实现这一点。n 1> 3
> 6\"bg-red-200 text-red-900\":message.type===\"error\", 7\"bg-green-200 text-green-900\":message.type===\"success\", 8}\">11>1215×1618{{ message.text }}19
202122232425export default {26data() {27return {28message: null,29};30},31};32n加载页面时,您不应该看到任何内容。举个例子,让我们添加一个触发器窗体组件,我们可以用它来演示如何将具有不同选项的事件发送到flashmessage组件。首先在resources/js/TriggerForm.vue创建组件并将其注册到resources/js/app.js文件中,然后将组件添加到欢迎视图中。n1// ...2Vue.component(\"flash-message\", require(\"./components/FlashMessage.vue\").default);3Vue.component(\"trigger-form\", require(\"./components/TriggerForm.vue\").default);4//...n3456n在表单组件中,我们需要添加输入、按钮和绑定到输入的数据属性。n 1 2 3 91519Message Type202123Success2426Error272830Send Message313233343536export default {37data() {38return {39message: {40text: \"Hey! Something awesome happened.\",41type: \"success\"42}43};44},45methods: {46sendMessage() {47// ...48}49}50};51n在sendMessage方法中,我们需要使用向flash消息组件侦听器发出事件的事件总线。从Vue组件发出事件时,第一个参数是事件的名称,第二个参数是事件侦听器需要的任何数据。在这里,我们将传递\"flash message\"作为事件名称,this.message作为第二个参数。我们还将在发出事件后重置消息。n1sendMessage() {2Bus.$emit(\"flash-message\", this.message);35text: null,6type: \"success\",7}8}n在我们的flash message组件中,我们需要为此事件设置一个侦听器和一个回调来处理它。我们先添加一个挂载的方法。最初,我们需要做的就是将组件内的消息设置为与事件传递的消息相等。n1mounted() {2Bus.$on(\"flash-message\",>4});5}n现在提交表单时,消息组件应该显示我们在表单中选择的文本和主题。n使组件消失n使关闭按钮工作,我们需要向按钮添加一个事件处理程序。n14>n接下来,我们将使组件在几秒钟后自动消失。使用setTimeout函数可以很容易地完成这一任务。n在我们的mounted函数中设置消息后,我们可以使用setTimeout在5秒钟后清除消息。如果您想让您的表单更快或更慢地消失,您可以更改该值。n1mounted() {2Bus.$on(\"flash-message\",>47}, 5000);8});9}n最初,此解决方案似乎工作正常,但如果您在5秒内提交了两次表单,则消息仍将在触发第一个事件的5秒内消失。为了解决这个问题,我们需要保存从调用setTimeout返回的计时器,并确保在下一个事件发生时重置它。我们可以很容易地做到这一点,通过更新我们的代码如下

CSS无头WordPress到底有多合适?

我想知道无头WordPress会在哪里登陆。\"headless\"指的是只使用WordPress管理,通过WordPress restapi构建面向用户的站点,而不是传统的WordPress主题结构?WordPress的未来?还是相对利基?需求在哪里?当然,对它有需求。我知道很多人都这么做。例如,Gatsby有一个gatsby-source-wordpress插件,它允许您以使用wordpressrestapi的方式从WordPress站点获取内容,并将其缓存为GraphQL,以便在React-power...

日期:2021-06-24 01:15:34 浏览:614

CSS制作带有粘性页眉和页脚的表格变得更容易了

不久前,当我在博客中看到HTML中的粘性页眉和页脚时,一个表同时有粘性页眉和粘性第一列。在它里面,我从来没有在任何、或元素上使用position: sticky,因为即使Safari和Firefox可以做到这一点,Chrome也做不到。但是它可以做表格单元格,比如和,这是一个相当不错的解决办法。好吧,这已经改变了。我通过Twitter听说Chrome在v91中\"重写了表格\"。https://t.co/vTBplXWWtT我看到它掉了下来,升级了,然后做了一个快速测试。嘿,看看有粘性的表格页眉和页脚。@C...

日期:2021-06-24 02:00:01 浏览:932

CSS技巧编年史XXXX

只是我最近做的一些非现场工作的一个小链接汇总。就像我习惯的那样。DevJourney播客#151 Chris Coyier从陶瓷到CSS技巧和代码笔\"Chris带我们从玩他的第一个C64到他的陶瓷文学学士,再回到web开发。我们讨论了他在这一过程中的不同立场,以及他们是如何缓慢但肯定地引导他走向web开发的。我们浏览了CSS技巧的创造和娱乐,在开放中学习,以及美好的一天是什么样子。Podrocket Podcast火箭手术:Kaelan和Chris Coyier比较笔记我被要求删除这里嵌入的音频,如果你想...

日期:2021-06-24 02:00:03 浏览:856

CSS使用子资源完整性保护您的网站

当您从外部服务器加载文件时,您相信您请求的内容是您期望的内容。由于您不自己管理服务器,因此您依赖于另一个第三方的安全性,从而增加了攻击面。信任第三方并不是天生的坏事,但它肯定应该在网站安全的背景下加以考虑。一个真实的例子这不是纯粹的理论危险。忽视潜在的安全问题可能而且已经造成严重后果。2019年6月4日,Malwarebytes宣布他们在网站上发现了一个恶意的略读程序NBA.com. 由于Amazon S3存储桶受损,攻击者能够修改JavaScript库以窃取客户的信用卡信息。值得担心的不仅仅是JavaSc...

日期:2021-06-24 02:00:03 浏览:762

CSS联合的可能性

这是首字母缩略词RSS中不是形容词的一个词。非常简单联合更新:Lol这里有两个错误。RSS是首字母缩写而不是首字母缩写,\"Really\"是副词而不是形容词。RSS不仅仅是RSS阅读器。尽管如此,如果我不喜欢RSS阅读器。它是关于把内容放在一种设计成可移植的格式。内容的API并不是一个隐喻,这就是它的字面含义。RSS一直在我的脑海中,因为它就像我的日报,但我敢打赌它并不是人们关注的最高峰,甚至是开发者。尽管如此,它还是受到了一点关注,因为谷歌在androidchrome中引入了一个\"following\...

日期:2021-06-24 03:00:02 浏览:590

CSS在开放细节元素上添加背景

关于元素有一点奇怪,那就是,当它打开时,并不总是100%清楚该元素内部的内容和不内部的内容。我不是说总是重要,或者说它是一个特别难解决的问题,我只是注意到它最近出现在我身上。这里有一个直观的例子:这里的文本在里面,什么不是?这个解决方案是…CSS。把的样式设计得有点独特,这样问题就解决了。即使你希望排版是一样的,或者你不想任何独家风格,直到被打开,这仍然是可能的。使用alpha透明填充,您甚至可以确保更深的嵌套保持清晰。对于只插入内联内容的<详细信息>(如\"spoiler\"UI或其他内容),...

日期:2021-06-24 03:00:04 浏览:755

CSS容器查询的聚宝盆

我不知道是什么原因,但是我的feed在过去的几周里充斥着关于CSS容器查询的文章。有关集装箱查询的热议实际上始于去年12月,当时米丽亚姆•苏珊娜(Miriam Suzanne)发布了一份提案(采纳了大卫•巴隆的提案),但3月底,Una Kravets在推特上发布的一条消息称,他们在chrome://flags的#enable-container-queries旗后投放了Chrome Canary 91.0.4459.0在如此短的时间内,容器查询已经覆盖了如此多的地方,而且规范甚至还不是最终的!我很高兴看到C...

日期:2021-06-24 03:00:04 浏览:912

CSS target=blank

那会不会让你的眼睛有点抽搐?就像…是打字错误。值的开头应该是带有下划线的>。就像…Welp, that\"s correct syntax!In the case of the no-underscore>, the blank部分只是一个名称。可能是任何东西。它可以是>,或者,可能是为了预示这里的目的:>。是一个特殊的关键字,它将在新选项卡中打开链接,每次都打开一个新选项卡。>将在新选项卡中打开第一个单击的链接,但任何共享>的链接都将在新打开的选项卡中打开。我从来不知道这一点!我相信这条微博的解释。我创建...

日期:2021-06-24 04:00:02 浏览:998

CSS查看WCAG 2.5.5以获得更好的目标尺寸

你有没有经历过这样的挫折:试图点击移动设备上的一个按钮却什么也不做,因为目标大小不够大,而且它在你的按键上不起作用?也许你有更大的手指,像我一样,也可能是由于灵活性有限。这是因为我们,即用户,必须与之交互的元素的目标区域越来越小,我们来谈谈如何使其足够大,以便用户能够轻松地与元素交互。如果用户在一个小型手持式触摸屏设备上访问内容,而这个设备的不动产要紧得多,那么这将是一个特别大的问题。成功标准重温我在上一篇涉及WCAG 2.1标准的文章中谈到了成功标准,Label in Name。简言之,WCAG标准是我们...

日期:2021-06-24 04:00:03 浏览:535

CSS Trickz:Netlify随需应变构建器的实验

默认情况下,WordPress站点有一个API。想看看这个网站的最新帖子吗,只是一组特定的数据…JSON格式?给你。Alex Riviere用它做了一个笑话站点。起初,当加载该API客户端时,该站点将fetch。很好,但是如果我们认真考虑一下,它对于访问站点的人来说是非常低效的(也就是说,比服务器呈现的HTML慢),对于API命中率也不是很高。所以,Alex用Netlify函数重新编写了它。然后Netlify函数将从API中fetch(在云中的节点中),并为预呈现的HTML提供服务。这可能更好一些,但正如亚...

日期:2021-06-24 04:00:04 浏览:585