How to use one SVG file in page more than one time
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;
I have simple owl carousel -
<div id="header-slider" class="owl-carousel owl-theme">
<div class="single_slide" data-dot='<button role="button" class="owl-dot"></button><?php include("inc/chart3.svg")?>'>
<img src="assets/images/banner.jpg" alt="" title="">
</div>
<div class="single_slide" data-dot='<button role="button" class="owl-dot"></button><?php include("inc/chart3.svg")?>'>
<img src="assets/images/banner.jpg" alt="" title="">
</div>
</div>
And i am trying to include svg file (inc/chart3.svg) instead of normal dots. The problem is, that only one file is loaded and the others will not display. Is there any way to display every svg file and start his animation when class "active" is set?
Svg has this code :
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="16" height="16" viewbox="0 0 250 250" enable-background="new 0 0
426.667 410" xml:space="preserve">
<path class="kruznice" transform="translate(125, 125) scale(.84)"/>
</svg>
<script>
jQuery(document).ready(function()
var kruznice = document.querySelector(".kruznice")
, a = 0
, p = Math.PI
, t = 2;
(function draw()
a++;
a %= 360;
var r = ( a * p / 180 )
, x = Math.sin( r ) * 125
, y = Math.cos( r ) * - 125
, mid = ( a > 180 ) ? 1 : 0
, anim = "M 0 0 v -125 A 125 125 1 "
+ mid + " 1 "
+ x + " "
+ y + " z";
kruznice.setAttribute( "d", anim );
setTimeout(draw, t); // Redraw
)(););
</script>
javascript html svg owl-carousel owl-carousel-2
add a comment |
I have simple owl carousel -
<div id="header-slider" class="owl-carousel owl-theme">
<div class="single_slide" data-dot='<button role="button" class="owl-dot"></button><?php include("inc/chart3.svg")?>'>
<img src="assets/images/banner.jpg" alt="" title="">
</div>
<div class="single_slide" data-dot='<button role="button" class="owl-dot"></button><?php include("inc/chart3.svg")?>'>
<img src="assets/images/banner.jpg" alt="" title="">
</div>
</div>
And i am trying to include svg file (inc/chart3.svg) instead of normal dots. The problem is, that only one file is loaded and the others will not display. Is there any way to display every svg file and start his animation when class "active" is set?
Svg has this code :
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="16" height="16" viewbox="0 0 250 250" enable-background="new 0 0
426.667 410" xml:space="preserve">
<path class="kruznice" transform="translate(125, 125) scale(.84)"/>
</svg>
<script>
jQuery(document).ready(function()
var kruznice = document.querySelector(".kruznice")
, a = 0
, p = Math.PI
, t = 2;
(function draw()
a++;
a %= 360;
var r = ( a * p / 180 )
, x = Math.sin( r ) * 125
, y = Math.cos( r ) * - 125
, mid = ( a > 180 ) ? 1 : 0
, anim = "M 0 0 v -125 A 125 125 1 "
+ mid + " 1 "
+ x + " "
+ y + " z";
kruznice.setAttribute( "d", anim );
setTimeout(draw, t); // Redraw
)(););
</script>
javascript html svg owl-carousel owl-carousel-2
add a comment |
I have simple owl carousel -
<div id="header-slider" class="owl-carousel owl-theme">
<div class="single_slide" data-dot='<button role="button" class="owl-dot"></button><?php include("inc/chart3.svg")?>'>
<img src="assets/images/banner.jpg" alt="" title="">
</div>
<div class="single_slide" data-dot='<button role="button" class="owl-dot"></button><?php include("inc/chart3.svg")?>'>
<img src="assets/images/banner.jpg" alt="" title="">
</div>
</div>
And i am trying to include svg file (inc/chart3.svg) instead of normal dots. The problem is, that only one file is loaded and the others will not display. Is there any way to display every svg file and start his animation when class "active" is set?
Svg has this code :
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="16" height="16" viewbox="0 0 250 250" enable-background="new 0 0
426.667 410" xml:space="preserve">
<path class="kruznice" transform="translate(125, 125) scale(.84)"/>
</svg>
<script>
jQuery(document).ready(function()
var kruznice = document.querySelector(".kruznice")
, a = 0
, p = Math.PI
, t = 2;
(function draw()
a++;
a %= 360;
var r = ( a * p / 180 )
, x = Math.sin( r ) * 125
, y = Math.cos( r ) * - 125
, mid = ( a > 180 ) ? 1 : 0
, anim = "M 0 0 v -125 A 125 125 1 "
+ mid + " 1 "
+ x + " "
+ y + " z";
kruznice.setAttribute( "d", anim );
setTimeout(draw, t); // Redraw
)(););
</script>
javascript html svg owl-carousel owl-carousel-2
I have simple owl carousel -
<div id="header-slider" class="owl-carousel owl-theme">
<div class="single_slide" data-dot='<button role="button" class="owl-dot"></button><?php include("inc/chart3.svg")?>'>
<img src="assets/images/banner.jpg" alt="" title="">
</div>
<div class="single_slide" data-dot='<button role="button" class="owl-dot"></button><?php include("inc/chart3.svg")?>'>
<img src="assets/images/banner.jpg" alt="" title="">
</div>
</div>
And i am trying to include svg file (inc/chart3.svg) instead of normal dots. The problem is, that only one file is loaded and the others will not display. Is there any way to display every svg file and start his animation when class "active" is set?
Svg has this code :
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="16" height="16" viewbox="0 0 250 250" enable-background="new 0 0
426.667 410" xml:space="preserve">
<path class="kruznice" transform="translate(125, 125) scale(.84)"/>
</svg>
<script>
jQuery(document).ready(function()
var kruznice = document.querySelector(".kruznice")
, a = 0
, p = Math.PI
, t = 2;
(function draw()
a++;
a %= 360;
var r = ( a * p / 180 )
, x = Math.sin( r ) * 125
, y = Math.cos( r ) * - 125
, mid = ( a > 180 ) ? 1 : 0
, anim = "M 0 0 v -125 A 125 125 1 "
+ mid + " 1 "
+ x + " "
+ y + " z";
kruznice.setAttribute( "d", anim );
setTimeout(draw, t); // Redraw
)(););
</script>
javascript html svg owl-carousel owl-carousel-2
javascript html svg owl-carousel owl-carousel-2
asked Nov 15 '18 at 14:50
kores59kores59
1048
1048
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
You're able to load them both, which isn't the problem.
The problem is that querySelector
only returns one element, and so your script only gets applied to one SVG
element.
Use instead getElementsByClassName
(which returns an object list) and then use Object.values()
to get each SVG Element and then apply your attribute to run the animation.
$(document).ready(function()
var kruznice = document.getElementsByClassName("kruznice"),
a = 0,
p = Math.PI,
t = 2;
(function draw()
a++;
a %= 360;
var r = (a * p / 180),
x = Math.sin(r) * 125,
y = Math.cos(r) * -125,
mid = (a > 180) ? 1 : 0,
anim = "M 0 0 v -125 A 125 125 1 " +
mid + " 1 " +
x + " " +
y + " z";
Object.values(kruznice).forEach(item=>item.setAttribute("d", anim));
setTimeout(draw, t); // Redraw
)();
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="16" height="16" viewbox="0 0 250 250" enable-background="new 0 0
426.667 410" xml:space="preserve">
<path class="kruznice" transform="translate(125, 125) scale(.84)"/>
</svg>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="16" height="16" viewbox="0 0 250 250" enable-background="new 0 0
426.667 410" xml:space="preserve">
<path class="kruznice" transform="translate(125, 125) scale(.84)"/>
</svg>
1
Thank you very much! It works
– kores59
Nov 15 '18 at 15:09
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53322065%2fhow-to-use-one-svg-file-in-page-more-than-one-time%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
You're able to load them both, which isn't the problem.
The problem is that querySelector
only returns one element, and so your script only gets applied to one SVG
element.
Use instead getElementsByClassName
(which returns an object list) and then use Object.values()
to get each SVG Element and then apply your attribute to run the animation.
$(document).ready(function()
var kruznice = document.getElementsByClassName("kruznice"),
a = 0,
p = Math.PI,
t = 2;
(function draw()
a++;
a %= 360;
var r = (a * p / 180),
x = Math.sin(r) * 125,
y = Math.cos(r) * -125,
mid = (a > 180) ? 1 : 0,
anim = "M 0 0 v -125 A 125 125 1 " +
mid + " 1 " +
x + " " +
y + " z";
Object.values(kruznice).forEach(item=>item.setAttribute("d", anim));
setTimeout(draw, t); // Redraw
)();
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="16" height="16" viewbox="0 0 250 250" enable-background="new 0 0
426.667 410" xml:space="preserve">
<path class="kruznice" transform="translate(125, 125) scale(.84)"/>
</svg>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="16" height="16" viewbox="0 0 250 250" enable-background="new 0 0
426.667 410" xml:space="preserve">
<path class="kruznice" transform="translate(125, 125) scale(.84)"/>
</svg>
1
Thank you very much! It works
– kores59
Nov 15 '18 at 15:09
add a comment |
You're able to load them both, which isn't the problem.
The problem is that querySelector
only returns one element, and so your script only gets applied to one SVG
element.
Use instead getElementsByClassName
(which returns an object list) and then use Object.values()
to get each SVG Element and then apply your attribute to run the animation.
$(document).ready(function()
var kruznice = document.getElementsByClassName("kruznice"),
a = 0,
p = Math.PI,
t = 2;
(function draw()
a++;
a %= 360;
var r = (a * p / 180),
x = Math.sin(r) * 125,
y = Math.cos(r) * -125,
mid = (a > 180) ? 1 : 0,
anim = "M 0 0 v -125 A 125 125 1 " +
mid + " 1 " +
x + " " +
y + " z";
Object.values(kruznice).forEach(item=>item.setAttribute("d", anim));
setTimeout(draw, t); // Redraw
)();
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="16" height="16" viewbox="0 0 250 250" enable-background="new 0 0
426.667 410" xml:space="preserve">
<path class="kruznice" transform="translate(125, 125) scale(.84)"/>
</svg>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="16" height="16" viewbox="0 0 250 250" enable-background="new 0 0
426.667 410" xml:space="preserve">
<path class="kruznice" transform="translate(125, 125) scale(.84)"/>
</svg>
1
Thank you very much! It works
– kores59
Nov 15 '18 at 15:09
add a comment |
You're able to load them both, which isn't the problem.
The problem is that querySelector
only returns one element, and so your script only gets applied to one SVG
element.
Use instead getElementsByClassName
(which returns an object list) and then use Object.values()
to get each SVG Element and then apply your attribute to run the animation.
$(document).ready(function()
var kruznice = document.getElementsByClassName("kruznice"),
a = 0,
p = Math.PI,
t = 2;
(function draw()
a++;
a %= 360;
var r = (a * p / 180),
x = Math.sin(r) * 125,
y = Math.cos(r) * -125,
mid = (a > 180) ? 1 : 0,
anim = "M 0 0 v -125 A 125 125 1 " +
mid + " 1 " +
x + " " +
y + " z";
Object.values(kruznice).forEach(item=>item.setAttribute("d", anim));
setTimeout(draw, t); // Redraw
)();
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="16" height="16" viewbox="0 0 250 250" enable-background="new 0 0
426.667 410" xml:space="preserve">
<path class="kruznice" transform="translate(125, 125) scale(.84)"/>
</svg>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="16" height="16" viewbox="0 0 250 250" enable-background="new 0 0
426.667 410" xml:space="preserve">
<path class="kruznice" transform="translate(125, 125) scale(.84)"/>
</svg>
You're able to load them both, which isn't the problem.
The problem is that querySelector
only returns one element, and so your script only gets applied to one SVG
element.
Use instead getElementsByClassName
(which returns an object list) and then use Object.values()
to get each SVG Element and then apply your attribute to run the animation.
$(document).ready(function()
var kruznice = document.getElementsByClassName("kruznice"),
a = 0,
p = Math.PI,
t = 2;
(function draw()
a++;
a %= 360;
var r = (a * p / 180),
x = Math.sin(r) * 125,
y = Math.cos(r) * -125,
mid = (a > 180) ? 1 : 0,
anim = "M 0 0 v -125 A 125 125 1 " +
mid + " 1 " +
x + " " +
y + " z";
Object.values(kruznice).forEach(item=>item.setAttribute("d", anim));
setTimeout(draw, t); // Redraw
)();
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="16" height="16" viewbox="0 0 250 250" enable-background="new 0 0
426.667 410" xml:space="preserve">
<path class="kruznice" transform="translate(125, 125) scale(.84)"/>
</svg>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="16" height="16" viewbox="0 0 250 250" enable-background="new 0 0
426.667 410" xml:space="preserve">
<path class="kruznice" transform="translate(125, 125) scale(.84)"/>
</svg>
$(document).ready(function()
var kruznice = document.getElementsByClassName("kruznice"),
a = 0,
p = Math.PI,
t = 2;
(function draw()
a++;
a %= 360;
var r = (a * p / 180),
x = Math.sin(r) * 125,
y = Math.cos(r) * -125,
mid = (a > 180) ? 1 : 0,
anim = "M 0 0 v -125 A 125 125 1 " +
mid + " 1 " +
x + " " +
y + " z";
Object.values(kruznice).forEach(item=>item.setAttribute("d", anim));
setTimeout(draw, t); // Redraw
)();
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="16" height="16" viewbox="0 0 250 250" enable-background="new 0 0
426.667 410" xml:space="preserve">
<path class="kruznice" transform="translate(125, 125) scale(.84)"/>
</svg>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="16" height="16" viewbox="0 0 250 250" enable-background="new 0 0
426.667 410" xml:space="preserve">
<path class="kruznice" transform="translate(125, 125) scale(.84)"/>
</svg>
$(document).ready(function()
var kruznice = document.getElementsByClassName("kruznice"),
a = 0,
p = Math.PI,
t = 2;
(function draw()
a++;
a %= 360;
var r = (a * p / 180),
x = Math.sin(r) * 125,
y = Math.cos(r) * -125,
mid = (a > 180) ? 1 : 0,
anim = "M 0 0 v -125 A 125 125 1 " +
mid + " 1 " +
x + " " +
y + " z";
Object.values(kruznice).forEach(item=>item.setAttribute("d", anim));
setTimeout(draw, t); // Redraw
)();
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="16" height="16" viewbox="0 0 250 250" enable-background="new 0 0
426.667 410" xml:space="preserve">
<path class="kruznice" transform="translate(125, 125) scale(.84)"/>
</svg>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="16" height="16" viewbox="0 0 250 250" enable-background="new 0 0
426.667 410" xml:space="preserve">
<path class="kruznice" transform="translate(125, 125) scale(.84)"/>
</svg>
answered Nov 15 '18 at 15:01
kemicofakemicofa
10.8k44085
10.8k44085
1
Thank you very much! It works
– kores59
Nov 15 '18 at 15:09
add a comment |
1
Thank you very much! It works
– kores59
Nov 15 '18 at 15:09
1
1
Thank you very much! It works
– kores59
Nov 15 '18 at 15:09
Thank you very much! It works
– kores59
Nov 15 '18 at 15:09
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53322065%2fhow-to-use-one-svg-file-in-page-more-than-one-time%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown