Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Variable in url(..) not possible #190

Closed
tristanlins opened this issue Feb 2, 2011 · 8 comments
Closed

Variable in url(..) not possible #190

tristanlins opened this issue Feb 2, 2011 · 8 comments

Comments

@tristanlins
Copy link

I tried to make a function, that using an argument as url(..) value.

e.a.

.give-a-background(@bg) {
    background: url(@bg) no-repeat left center, ...;
}

.css-class {
    .give-a-background("images/foo.png");
}

i got a "could not call charAt of undefined" from line 2183 (v 1.0.41), because val.value is undefined.

currently its only possible this way

.give-a-background(@bg) {
    background: @bg no-repeat left center, ...;
}

.css-class {
    .give-a-background(url("images/foo.png"));
}
@funkatron
Copy link

Running into this myself. Would be extremely handy for setting base paths.

@jiggliemon
Copy link

Try This:

@base: "//";
.background(@image:'', @left:0, @top:0,@repeat:no-repeat){
    @url: %('%s%s',@base, @image);
    background: url(@url) @left @top @repeat;
}

@cloudhead
Copy link
Member

That's odd, it works just fine here.

@jiggliemon
Copy link

@cloudhead I was pointing out to funkatron & trilin how I got it to work.

@neonstalwart
Copy link
Contributor

for anyone else who comes across this issue i found i couldn't get @jiggliemon's solution to work (less 1.1.4) but based on http://lesscss.org/#-string-interpolation this worked for me

.background-image (@url) {
    background-image: url("@{url}");
}

i suppose this ticket could be closed?

@csnover
Copy link
Contributor

csnover commented Jan 10, 2012

This only happens in browser environments and is caused by the relative path “fixing” code in the tree.URL ctor. It does not check that val.value actually exists before trying to operate on it.

@jsdalton
Copy link

This is an issue when trying to use Twitter Bootstrap 2.0 with less.js in the browser environment.

Bootstrap uses the url(@url) format to pull sprite images in in sprites.less. less.js chokes on the undefined val.value that's passed to tree.URL() and an error is thrown, causing bootstrap not to load.

@csnover 's change resolves the issue for me.

I have updated my local copy of less.js so it's smooth sailing for me, but since this issue prevents Twitter Bootstrap 2.0 from running in the browser environment I hope it will get resolved soon, since others are probably having the same problem. E.g. I'm guessing this SO question might be related: http://stackoverflow.com/questions/8095499/twitter-bootstrap-wont-work-with-less-js

@Meligy
Copy link

Meligy commented May 25, 2012

Is the fix available in current release? (asking as I see the bug is still open).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

9 participants