GVKun编程网logo

MVC无法在css中使用background-url显示图像 – 使用捆绑(css无法引入)

7

对于MVC无法在css中使用background-url显示图像–使用捆绑感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍css无法引入,并为您提供关于c#中使用BackgroundWorker

对于MVC无法在css中使用background-url显示图像 – 使用捆绑感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍css无法引入,并为您提供关于c#中使用BackgroundWorker的实现、css background-position和background-size以及clip属性、CSS background-size:cover background-attachment:固定裁剪背景图片、CSS background-size:封面+ background-attachment:固定的剪辑背景图片的有用信息。

本文目录一览:

MVC无法在css中使用background-url显示图像 – 使用捆绑(css无法引入)

MVC无法在css中使用background-url显示图像 – 使用捆绑(css无法引入)

我有一个MVC4项目,它具有以下结构:

/Content/css/sprites/topbar.css

/Content/images/topbar.png

在css文件中,我试图通过使用以下方法引用图像:

background: url('../../images/topbar.png')

但图像不显示.如果我更改它,以便图像位于:

/Content/css/sprites/topbar.png

并将css更改为:

background: url('content/css/sprites/topbar.png')

它有效,但这打破了我的项目结构.

有任何想法吗?

编辑

我没有提到别的东西,因为我认为它不相关,但它似乎影响了这一点!

我使用@System.Web.Optimization.Styles.Render(“〜/ MainStyles”)来捆绑和缩小css,但如果我采取了这一步,那么它就像我期望的那样工作.如何使用我的项目结构并使用捆绑功能?

解决方法

不知道是否有其他人遇到这个问题.但是你可以在你的CSS中使用相对路径.关键是使用虚拟路径注册捆绑包到您的实际css所在的同一文件夹.这样MVC将从该路径中的处理程序请求捆绑的css.

尝试将您的捆绑注册更改为:

bundles.Add(new StyleBundle("~/Content/css/sprites/topbar")
              .Include("~/Content/css/sprites/topbar.css")
            );

然后在你的视图@ Script.Render(“/ Content / css / sprites / topbar”)

Mvc会从/ Content / css / sprites / topbar请求你编译的css包吗?{some-crazy-token-thing}

c#中使用BackgroundWorker的实现

c#中使用BackgroundWorker的实现

在客户端中,为了防止界面假死状态,或者不能拖动界面,可以使用BackgroundWorker。

1.在界面上拖动一个BackgroundWorker,label,进度条和2个button控件。BackgroundWorker也可以选择在cs文件中new。

2.bgWorker_DoWork事件中接收到bgWorker.RunWorkerAsync("11111")

3.bgWorker_ProgessChanged事件中接收到bgWorker.ReportProgress方法传递过来的参数

 4.bgWorker_WorkerCompleted事件中主要处理线程暂停或者终止时的提示

5.中途取消操作后,也就是执行bgWorker.CancelAsync()此方法。bgWorker.CancellationPending会变成true

所有代码:

    public partial class Form1 : Form
    {
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void btnStart_Click(object sender, EventArgs e)
        {
            if (bgWorker.IsBusy)              //判断是否正在运行异步操作
                return;
            this.progressBar1.Maximum = 100;  //设置进度条最大值
            this.btnStart.Enabled = false;
            this.btnStop.Enabled = true;
            bgWorker.RunWorkerAsync("11111");   //给业务传递参数,就是把前台的要处理的参数传递进去
        }
 
        public void bgWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            //业务处理
            object s = e.Argument;   //这的e.Argument就是上面传递的参数 11111
            for (int i = 0; i <= this.progressBar1.Maximum; i++)
            {
                if (bgWorker.CancellationPending)     //此处关联的是btnStop_Click事件中的这个bgWorker.CancelAsync();如果这个触发了,那么就会停止。
                {
                    e.Cancel = true;
                    return;
                }
                else
                {
                    bgWorker.ReportProgress(i, "222222"); //向bgWorker_ProgessChanged事件传递参数,第一个是进度的参数,第二个是你要处理业务的参数
                    System.Threading.Thread.Sleep(1);
                }
            }
        }
 
        public void bgWorker_ProgessChanged(object sender, ProgressChangedEventArgs e)
        {
            //页面处理
            string state = (string)e.UserState;//接收上bgWorker.ReportProgress方法传递过来的参数userState
            this.progressBar1.Value = e.ProgressPercentage;
            this.label1.Text = "处理进度:" + Convert.ToString(e.ProgressPercentage) + "%";
            //label2.Text = e.ProgressPercentage.ToString();
        }
 
        public void bgWorker_WorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            if (e.Error != null)
            {
                MessageBox.Show(e.Error.ToString());
                return;
            }
            if (!e.Cancelled)
                this.label1.Text = "处理完毕!";
            else
                this.label1.Text = "处理终止!";
 
        }
 
        private void btnStop_Click(object sender, EventArgs e)
        {
            this.btnStart.Enabled = true;
            this.btnStop.Enabled = false;
            bgWorker.CancelAsync();
        }
 
    }

多个线程的话,在A_DoWork开启另外一个bw,可以一直套用。

总结。

主要是3个事件:

  • bgWorker_DoWork:业务内部处理大量数据的地方,后台默默处理数据。(关于界面控件的东西,这里不要出现,比如给控件赋值,这里不要出现)
  • bgWorker_ProgessChanged:每次业务内部处理完成一部分时,就会告诉界面我处理了什么,主要是给前台显示信息。(这里可以与前台一起交互)
  • bgWorker_WorkerCompleted:终止或者完成后就会进入(这里可以是完成数据后,给控件赋值)

3个方法:

  • RunWorkerAsync:向业务内部传递处理数据的方法,传递集合,数值之类的
  • ReportProgress:把处理的进度告诉界面
  • CancelAsync:取消操作会执行此方法

 到此这篇关于c#中使用BackgroundWorker的实现的文章就介绍到这了,更多相关c# BackgroundWorker内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

您可能感兴趣的文章:
  • C#中Backgroundworker与Thread的区别
  • C#使用BackgroundWorker控件
  • C#中BackgroundWorker类用法总结
  • c# BackgroundWorker组件的作用
  • C#中backgroundWorker类的用法详解
  • c# BackgroundWorker使用方法
  • C# BackgroundWorker使用教程
  • C#中backgroundworker的使用教程
  • C# BackgroundWorker用法详解
  • C# BackgroundWorker组件学习入门介绍

css background-position和background-size以及clip属性

css background-position和background-size以及clip属性

今天聊一聊css背景属性的background-position和background-size以及clip三个属性。

background-position:(0%,0%)为默认值
这个属性,看它字面意思就知道啦,用来定位背景显示的位置。既然是定位,自然而然我们就想到了top和left,
对比于position属性,在这里我们可以用以下方式来使用background-position:

1、直接使用定位关键词如"right","center","top","left"等,形如background-
position:center left;如果只设置一个值,另一个值默认为center;

2、使用百分比,形如background-position:10% 20%;第一个值为水平值,第二个为垂直方向值如果只设置
 一个值,另一个值默认为50%;

3、使用px,em等其他css单位,与百分比使用类似。




background-size:auto为默认值
这个属性,是用来控制背景图片尺寸的。它也有几种用法:

1、直接使用css单位如px,rem等,形如:background-size:10px 20px;第一个数值用来确定宽度,第二个
值用来确定高度。

2、使用百分比与使用单位类似,是以父元素为基准。

3、关键词cover,background-size:cover;顾名思义,这个属性会让背景图片完全覆盖元素空间。我们可以
这样理解,将一张图片等比例放大,直到这张图片能够完全将元素空间完全覆盖时,就是此时cover定义的背景
尺寸了。

4、关键词contain,background-size:contain;contain属性与cover不同,仍然是等比例拉大背景图片
但是,contain属性是在图片的宽度或者高度其中之一和元素的宽度和高度一致时,此时的尺寸就是背景的尺寸
也就是说,图片会被放大到容器能够完全显示它的最大尺寸。




最后,我们来看一个用clip属性搭配js脚本实现的效果:

clipboard.png

我们看到图片中的导航条,文化二字被“切割”了,一部分是黑色,一部分是白色。这是怎么做到的呢?诀窍在于
使用clip属性,clip用来裁剪绝对定位元素,被切掉的部分类似于overflow:hidden,也就是说在页面上是
看不见的。这个效果,其实用了两个一样的导航重叠在一起,然后通过js脚本根据滚动来实时设置clip属性的值
nav1裁剪掉下部分,nav2裁剪掉上部分,这样看来就实现了图片的效果。

由于文字描述比较难懂,这里贴出有图中效果的某网址,供各位参考~~
点击这里:http://www.sketchin.ch/en/

CSS background-size:cover background-attachment:固定裁剪背景图片

CSS background-size:cover background-attachment:固定裁剪背景图片

我有一个包含背景图像的数字列表。类似以下内容:
<ul>
  <li>
    <figure></figure>
  </li>
  <li>
    <figure></figure>
  </li>
  <li>
    <figure></figure>
  </li>
</ul>

这些图像中的每一个都将其背景大小设置为覆盖,背景附件设置为固定。

figure {
  width: 100%;
  height: 100%;
  background-size: cover;
  background-attachment: fixed;
}

当每个图形占据整个视口时,这样做很好,但是如果有任何类型的偏移,则背景图像被剪切。

据我所知,这是设计(https://developer.mozilla.org/en-US/docs/Web/CSS/background-size#Values)。

我想要图像垂直或水平剪辑,但不是两者,并且以图形本身的大小为中心。

我知道有javascript解决方案,但是有没有办法使用CSS?

这是一个工作示例:http://codepen.io/Godwin/pen/KepiJ

解决方法

不幸的是,这只是一个固定的定位工作在CSS中的工件,而纯CSS中没有办法 – 你必须使用Javascript。

原因是由于background-attachment:fixed和background-size:cover的组合。当您指定background-attachment:固定它本质上会使背景图像的行为就像是一个位置:固定图像,这意味着它被从页面流和定位上下文中取出,并且变得相对于视口而不是元素的背景图像。

因此,无论何时使用这些属性,相对于视口大小计算盖值,而不考虑元素本身的大小,这就是为什么当元素与视口的大小相同但被裁剪时,它的预期工作原理当元素小于视口时,以意想不到的方式。

为了解决这个问题,您基本上需要使用background-attachment:滚动并将事件侦听器绑定到JS中的滚动事件,手动更新背景位置相对于窗口滚动的距离,以模拟固定位置,但仍然计算background-size:相对于容器元素而不是视口的coverage。

CSS background-size:封面+ background-attachment:固定的剪辑背景图片

CSS background-size:封面+ background-attachment:固定的剪辑背景图片

我有一个包含背景图像的数字列表。类似于以下内容:

<ul>  <li>    <figure></figure>  </li>  <li>    <figure></figure>  </li>  <li>    <figure></figure>  </li></ul>

这些图像中的每个图像都将其background-size设置为,coverbackground-attachment设置为fixed

figure {  width: 100%;  height: 100%;  background-size: cover;  background-attachment: fixed;}

当每个图形都占据整个视口时,这可以正常工作,但是如果存在任何偏移,则背景图像将被裁剪。

我希望图像可以垂直或水平剪切,但不能同时剪切,并且要以图形本身的大小为中心。

我知道有JavaScript解决方案,但是有没有办法使用CSS做到这一点?

答案1

小编典典

不幸的是,这只是固定位置在CSS中的工作原理,而在纯CSS中则无法解决-您必须使用Javascript。

之所以出现这种情况是由于组合background-attachment: fixedbackground-size:cover。当您指定background-attachment: fixed它时,它实际上会使background-image行为就像是一幅position: fixed图像,这意味着它是从页面流和定位上下文中取出的,并且相对于视口而不是相对于其背景图像的元素。

因此,每当您同时使用这些属性时,cover无论元素本身的大小如何,都会相对于视口的大小来计算值,这就是为什么当元素与视口的大小相同但被裁剪时,它可以按预期工作的原因元素小于视口时的意外方式。

为了解决这个问题,您基本上需要使用background-attachment:scroll事件监听器并将其绑定到scrollJS中的事件,该事件监听器手动更新background-position相对于窗口已滚动的距离的相对值,以模拟固定位置,但仍background-size: cover相对于容器元素而不是视口进行计算。

关于MVC无法在css中使用background-url显示图像 – 使用捆绑css无法引入的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于c#中使用BackgroundWorker的实现、css background-position和background-size以及clip属性、CSS background-size:cover background-attachment:固定裁剪背景图片、CSS background-size:封面+ background-attachment:固定的剪辑背景图片的相关知识,请在本站寻找。

本文标签: