473,888 Members | 1,475 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Need help finding CSS bug in Opera

I've put together a prototype of two-tiered CSS tabs that works really well
in IE6, IE7, and FF2. It also works very well in Opera 9.27 _except_ that
the placement of the lower tier of tabs is messed up. Both the XHTML and CSS
validate without any errors or warnings. Can anyone help me figure out what
is wrong?

I'd be especially interested in the technique you used to figure out where
the problem was. I still struggle a lot when I try to figure out why
something is not displaying correctly.

You can see the prototype at http://westown.qqqq.ca/2000a.html.

--
By the way, in case anyone's interested, I have another prototype of two
tiered tabs - this one doesn't use GIFs - at
http://westown.qqqq.ca/2000.html. I'd be interested in critiques or
suggestions for improvement on both prototypes. I'd be especially interested
to know if these pages are easily accessible to the handicapped. I'm really
not sure how to test for that.

--
Rhino


Jun 27 '08 #1
15 1987
On 2008-06-14, rhino <No************ ***********@ano nymous.comwrote :
I've put together a prototype of two-tiered CSS tabs that works really well
in IE6, IE7, and FF2. It also works very well in Opera 9.27 _except_ that
the placement of the lower tier of tabs is messed up. Both the XHTML and CSS
validate without any errors or warnings. Can anyone help me figure out what
is wrong?
It's not a bug: you're setting position: absolute on ul#subnav-2000 but
not setting top.

That means the browser is supposed to position it where it would have
gone if it had been normal-flow, but, according to the spec, it is free
to make a guess at that position.

Opera just guessed differently.

It's not safe to rely on this. If you use position: absolute, I
recommend set at least one of top/bottom and one of left/right.

Not sure why you need position: absolute here anyway-- it stops the
second row of tabs extending the width of the first tab on the first
row, but I don't know why the second row needs to be a child of the
first element of the first row in the HTML.
Jun 27 '08 #2

"Ben C" <sp******@spam. eggswrote in message
news:sl******** *************@b owser.marioworl d...
On 2008-06-14, rhino <No************ ***********@ano nymous.comwrote :
>I've put together a prototype of two-tiered CSS tabs that works really
well
in IE6, IE7, and FF2. It also works very well in Opera 9.27 _except_ that
the placement of the lower tier of tabs is messed up. Both the XHTML and
CSS
validate without any errors or warnings. Can anyone help me figure out
what
is wrong?

It's not a bug: you're setting position: absolute on ul#subnav-2000 but
not setting top.

That means the browser is supposed to position it where it would have
gone if it had been normal-flow, but, according to the spec, it is free
to make a guess at that position.

Opera just guessed differently.

It's not safe to rely on this. If you use position: absolute, I
recommend set at least one of top/bottom and one of left/right.

Not sure why you need position: absolute here anyway-- it stops the
second row of tabs extending the width of the first tab on the first
row, but I don't know why the second row needs to be a child of the
first element of the first row in the HTML.
Frankly, I'm not sure why some of the CSS rules are there either. I didn't
create this from scratch. I found an example that came fairly close to what
I wanted to do and tweaked it until it was behaving the way I wanted - aside
from the placement of the second tier of tabs in Opera.

As you can probably see, the prototype is trying to show a two-tiered menu
where the visitor to the site can view various newsletters published by the
site. The user chooses a particular year in the upper tier of tabs, then the
appropriate lower tier is displayed to show the issues published for that
year. (I'm assuming that some years may have more or different issues than
other years). Once the appropriate year has been selected and the issues tab
for that year has been displayed, the user chooses the issue they want.

The HTML for this set of menus contains an unordered list with an <lifor
each year. This list is the #topnav portion of the CSS. Then, for each year
in that outer list, there is another unordered list within it, showing the
issues available in that year. Each issue list has a distinct name, like
subnav-2000. Every webpage concerning the newsletters contains the exact
same nested list showing _all_ of the issues for each year. I use local CSS
within each webpage to turn off all the issue lists except for the
currently-selected year.

I assume the CSS from the original code is trying to make sure that the
issues tabs are immediately below the years tabs. I'm not really sure why
the absolute positioning is being used; perhaps it is to ensure that issues
tabs is situated below the years tabs??

In any case, can you suggest what I should be doing differently. I'm
certainly not wedded to using absolute positioning. I just want the issues
tabs to be immediately under the years tabs.

--
Rhino
Jun 27 '08 #3
In article <g3**********@n ews.datemas.de> ,
"rhino" <No************ ***********@ano nymous.comwrote :
>
"Ben C" <sp******@spam. eggswrote in message
news:sl******** *************@b owser.marioworl d...
On 2008-06-14, rhino <No************ ***********@ano nymous.comwrote :
I've put together a prototype of two-tiered CSS tabs that works really
well
in IE6, IE7, and FF2. It also works very well in Opera 9.27 _except_ that
the placement of the lower tier of tabs is messed up. Both the XHTML and
CSS
validate without any errors or warnings. Can anyone help me figure out
what
is wrong?
It's not a bug: you're setting position: absolute on ul#subnav-2000 but
not setting top.
...
Not sure why you need position: absolute here anyway-- it stops the
second row of tabs extending the width of the first tab on the first
row, but I don't know why the second row needs to be a child of the
first element of the first row in the HTML.

Frankly, I'm not sure why some of the CSS rules are there either. ...

In any case, can you suggest what I should be doing differently. I'm
certainly not wedded to using absolute positioning. I just want the issues
tabs to be immediately under the years tabs.
There's a sort of two-tiered menu that seems to work in Opera OK at

<http://tvrs.org.au/disability/children.html>

Might give you an idea for a different approach?

--
dorayme
Jun 27 '08 #4

"dorayme" <do************ @optusnet.com.a uwrote in message
news:do******** *************** ***********@new s-vip.optusnet.co m.au...
In article <g3**********@n ews.datemas.de> ,
"rhino" <No************ ***********@ano nymous.comwrote :
>>
"Ben C" <sp******@spam. eggswrote in message
news:sl******* **************@ bowser.mariowor ld...
On 2008-06-14, rhino <No************ ***********@ano nymous.comwrote :
I've put together a prototype of two-tiered CSS tabs that works really
well
in IE6, IE7, and FF2. It also works very well in Opera 9.27 _except_
that
the placement of the lower tier of tabs is messed up. Both the XHTML
and
CSS
validate without any errors or warnings. Can anyone help me figure out
what
is wrong?

It's not a bug: you're setting position: absolute on ul#subnav-2000 but
not setting top.
...
Not sure why you need position: absolute here anyway-- it stops the
second row of tabs extending the width of the first tab on the first
row, but I don't know why the second row needs to be a child of the
first element of the first row in the HTML.

Frankly, I'm not sure why some of the CSS rules are there either. ...

In any case, can you suggest what I should be doing differently. I'm
certainly not wedded to using absolute positioning. I just want the
issues
tabs to be immediately under the years tabs.

There's a sort of two-tiered menu that seems to work in Opera OK at

<http://tvrs.org.au/disability/children.html>

Might give you an idea for a different approach?
Thank you. I've bookmarked that example and will consider using it if I
can't make my prototype work.

But, given that my current prototype is working perfectly in three major
browsers and only has one specific problem in Opera, I'd really like to
figure out what to change to make it work. I have to believe I only need to
change one or two small things to resolve this problem. That ought to be a
_lot_ less work than starting again.

--
Rhino
Jun 27 '08 #5
In article <g3**********@n ews.datemas.de> ,
"rhino" <No************ ***********@ano nymous.comwrote :
"dorayme" <do************ @optusnet.com.a uwrote in message
news:do******** *************** ***********@new s-vip.optusnet.co m.au...
In article <g3**********@n ews.datemas.de> ,
"rhino" <No************ ***********@ano nymous.comwrote :
>
"Ben C" <sp******@spam. eggswrote in message
news:sl******** *************@b owser.marioworl d...
On 2008-06-14, rhino <No************ ***********@ano nymous.comwrote :
I've put together a prototype of two-tiered CSS tabs that works really
well
in IE6, IE7, and FF2. It also works very well in Opera 9.27 _except_
that
the placement of the lower tier of tabs is messed up. Both the XHTML
and
CSS
validate without any errors or warnings. Can anyone help me figure out
what
is wrong?

It's not a bug: you're setting position: absolute on ul#subnav-2000 but
not setting top.
Frankly, I'm not sure why some of the CSS rules are there either. ...

In any case, can you suggest what I should be doing differently. I'm
certainly not wedded to using absolute positioning. I just want the
issues
tabs to be immediately under the years tabs.
There's a sort of two-tiered menu that seems to work in Opera OK at

<http://tvrs.org.au/disability/children.html>

Might give you an idea for a different approach?
Thank you. I've bookmarked that example and will consider using it if I
can't make my prototype work.

But, given that my current prototype is working perfectly in three major
browsers and only has one specific problem in Opera, I'd really like to
figure out what to change to make it work. I have to believe I only need to
change one or two small things to resolve this problem. That ought to be a
_lot_ less work than starting again.

OK. I understand. In that case, have you tried Ben's suggestion and
attended to giving a "top: xunits" along with your "position: absolute"?

In my opinion you are buying trouble using abs positioning here. This
positioning is tricky business!

Even in Firefox and the browsers you mention, have you seen what happens
to your menus and page when the text is enlarged? Try it and see.
Perhaps you might consider not using abs position and consider
establishing your menu system of a more fluid basis that takes account
of users changing their text size preferences.

--
dorayme
Jun 27 '08 #6
On 2008-06-14, rhino <No************ ***********@ano nymous.comwrote :
>
"Ben C" <sp******@spam. eggswrote in message
news:sl******** *************@b owser.marioworl d...
>On 2008-06-14, rhino <No************ ***********@ano nymous.comwrote :
>>[re: http://westown.qqqq.ca/2000a.html]
>>I've put together a prototype of two-tiered CSS tabs that works really
well
in IE6, IE7, and FF2. It also works very well in Opera 9.27 _except_ that
the placement of the lower tier of tabs is messed up. Both the XHTML and
CSS
validate without any errors or warnings. Can anyone help me figure out
what
is wrong?

It's not a bug: you're setting position: absolute on ul#subnav-2000 but
not setting top.

That means the browser is supposed to position it where it would have
gone if it had been normal-flow, but, according to the spec, it is free
to make a guess at that position.

Opera just guessed differently.

It's not safe to rely on this. If you use position: absolute, I
recommend set at least one of top/bottom and one of left/right.

Not sure why you need position: absolute here anyway-- it stops the
second row of tabs extending the width of the first tab on the first
row, but I don't know why the second row needs to be a child of the
first element of the first row in the HTML.

Frankly, I'm not sure why some of the CSS rules are there either. I didn't
create this from scratch. I found an example that came fairly close to what
I wanted to do and tweaked it until it was behaving the way I wanted - aside
from the placement of the second tier of tabs in Opera.

As you can probably see, the prototype is trying to show a two-tiered menu
where the visitor to the site can view various newsletters published by the
site. The user chooses a particular year in the upper tier of tabs, then the
appropriate lower tier is displayed to show the issues published for that
year. (I'm assuming that some years may have more or different issues than
other years). Once the appropriate year has been selected and the issues tab
for that year has been displayed, the user chooses the issue they want.

The HTML for this set of menus contains an unordered list with an <lifor
each year. This list is the #topnav portion of the CSS. Then, for each year
in that outer list, there is another unordered list within it, showing the
issues available in that year. Each issue list has a distinct name, like
subnav-2000. Every webpage concerning the newsletters contains the exact
same nested list showing _all_ of the issues for each year. I use local CSS
within each webpage to turn off all the issue lists except for the
currently-selected year.

I assume the CSS from the original code is trying to make sure that the
issues tabs are immediately below the years tabs. I'm not really sure why
the absolute positioning is being used; perhaps it is to ensure that issues
tabs is situated below the years tabs??

In any case, can you suggest what I should be doing differently. I'm
certainly not wedded to using absolute positioning. I just want the issues
tabs to be immediately under the years tabs.
The reason they're using absolute positioning is to stop the subnavs
affecting the widths of their containers.

The CSS is quite ingenious because it looks like its author has set
themselves the challenge of not altering the HTML in any way for mere
styling purposes. They have also not set width or height on any of the
tabs, therefore presupposing nothing about what text they contain or
what the user's font size is.

All this is good in theory, so we'll try not to break it too much.

Here is a way to make it work in Opera (as well as Firefox and other
reasonably conforming browsers) with relatively few compromises and
without touching the HTML:

1. Add position: relative to #topnav li. We'll use that as the container
for the positioned subnav (rather than trying to get an offset from
the top of the viewport).
2. Remove position: relative from #topnav a (because it's pointless and
does nothing), and add height: 1.2em. This way we set the height but
it grows and shrinks with the user's font size so it's not too bad.
3. Change the margins on "#topnav ul#subnav-2000, #topnav
ul#subnav-2004" to 9px 0 0 0. 9px is the total vertical padding on
#topnav a minus one.
4. Change "left: 10px" to "left: 0" and add "top: 1.2em;" to that
selector as well. So now we position the subnav 1.2em + 9px from the
top of the li, cleverly mixing top and margin-top so we can add
amounts in two different units. It no longer needs to be offset from
the left because it's already relative to the left edge of the li,
not to the left edge of the viewport.
5. Finally we need to change background: #ddd in that selector to
background: transparent and to add min-width: 800px. Otherwise the
subnav menu stacks up vertically because its containing width is now
just the width of the li. But the original design breaks horribly for
narrow viewports anyway, so we aren't really losing anything by using
min-width.
Jun 27 '08 #7
>
There's a sort of two-tiered menu that seems to work in Opera OK at

<http://tvrs.org.au/disability/children.html>

Might give you an idea for a different approach?

--
dorayme
Dorayme

Thanks for the suggestion! Will take a look at it and see if I can adopt
it. I have a LOT to learn about CSS. Have never tried using it before. It
is hard to teach a 70 year old dog new tricks.

Bob Catlin, also known as CANDOER Cat
Jun 27 '08 #8

"Ben C" <sp******@spam. eggswrote in message
news:sl******** *************@b owser.marioworl d...
On 2008-06-14, rhino <No************ ***********@ano nymous.comwrote :
>>
"Ben C" <sp******@spam. eggswrote in message
news:sl******* **************@ bowser.mariowor ld...
>>On 2008-06-14, rhino <No************ ***********@ano nymous.comwrote :
>>>[re: http://westown.qqqq.ca/2000a.html]
>>>I've put together a prototype of two-tiered CSS tabs that works really
well
in IE6, IE7, and FF2. It also works very well in Opera 9.27 _except_
that
the placement of the lower tier of tabs is messed up. Both the XHTML
and
CSS
validate without any errors or warnings. Can anyone help me figure out
what
is wrong?

It's not a bug: you're setting position: absolute on ul#subnav-2000 but
not setting top.

That means the browser is supposed to position it where it would have
gone if it had been normal-flow, but, according to the spec, it is free
to make a guess at that position.

Opera just guessed differently.

It's not safe to rely on this. If you use position: absolute, I
recommend set at least one of top/bottom and one of left/right.

Not sure why you need position: absolute here anyway-- it stops the
second row of tabs extending the width of the first tab on the first
row, but I don't know why the second row needs to be a child of the
first element of the first row in the HTML.

Frankly, I'm not sure why some of the CSS rules are there either. I
didn't
create this from scratch. I found an example that came fairly close to
what
I wanted to do and tweaked it until it was behaving the way I wanted -
aside
from the placement of the second tier of tabs in Opera.

As you can probably see, the prototype is trying to show a two-tiered
menu
where the visitor to the site can view various newsletters published by
the
site. The user chooses a particular year in the upper tier of tabs, then
the
appropriate lower tier is displayed to show the issues published for that
year. (I'm assuming that some years may have more or different issues
than
other years). Once the appropriate year has been selected and the issues
tab
for that year has been displayed, the user chooses the issue they want.

The HTML for this set of menus contains an unordered list with an <li>
for
each year. This list is the #topnav portion of the CSS. Then, for each
year
in that outer list, there is another unordered list within it, showing
the
issues available in that year. Each issue list has a distinct name, like
subnav-2000. Every webpage concerning the newsletters contains the exact
same nested list showing _all_ of the issues for each year. I use local
CSS
within each webpage to turn off all the issue lists except for the
currently-selected year.

I assume the CSS from the original code is trying to make sure that the
issues tabs are immediately below the years tabs. I'm not really sure why
the absolute positioning is being used; perhaps it is to ensure that
issues
tabs is situated below the years tabs??

In any case, can you suggest what I should be doing differently. I'm
certainly not wedded to using absolute positioning. I just want the
issues
tabs to be immediately under the years tabs.

The reason they're using absolute positioning is to stop the subnavs
affecting the widths of their containers.

The CSS is quite ingenious because it looks like its author has set
themselves the challenge of not altering the HTML in any way for mere
styling purposes. They have also not set width or height on any of the
tabs, therefore presupposing nothing about what text they contain or
what the user's font size is.

All this is good in theory, so we'll try not to break it too much.

Here is a way to make it work in Opera (as well as Firefox and other
reasonably conforming browsers) with relatively few compromises and
without touching the HTML:

1. Add position: relative to #topnav li. We'll use that as the container
for the positioned subnav (rather than trying to get an offset from
the top of the viewport).
2. Remove position: relative from #topnav a (because it's pointless and
does nothing), and add height: 1.2em. This way we set the height but
it grows and shrinks with the user's font size so it's not too bad.
3. Change the margins on "#topnav ul#subnav-2000, #topnav
ul#subnav-2004" to 9px 0 0 0. 9px is the total vertical padding on
#topnav a minus one.
4. Change "left: 10px" to "left: 0" and add "top: 1.2em;" to that
selector as well. So now we position the subnav 1.2em + 9px from the
top of the li, cleverly mixing top and margin-top so we can add
amounts in two different units. It no longer needs to be offset from
the left because it's already relative to the left edge of the li,
not to the left edge of the viewport.
5. Finally we need to change background: #ddd in that selector to
background: transparent and to add min-width: 800px. Otherwise the
subnav menu stacks up vertically because its containing width is now
just the width of the li. But the original design breaks horribly for
narrow viewports anyway, so we aren't really losing anything by using
min-width.
One step forward, one step back. Or thereabouts.

IE7, FF2, and Opera now all behave identically - but not quite right. And
IE6 is badly broken.

In the HTML, the only tabs which take you to a "real" newsletter are Jan-Feb
2000, May-Jun 2000, Jan 2004, and Jun 2004. All the other tabs take you to
"nopagea.ht ml", which is effectively an "under-construction" page.

For IE7, FF2, and Opera, everything is fine for the year 2000 and also for
the years where all the issues are under construction. But when you choose
2004, you see that the issues tabs are indented to begin at the same point
as the 2004 tab rather than left to start at the 2000 tab. Re-reading your
fourth suggestion, that appears to be what you want but I'd prefer to leave
the issues tab so that it always begins at the same point as the 2000 tab.
How do I do that?

IE6 is so badly broken with this CSS that I don't know where to begin with
sorting it out.

Am I asking too much in trying to get this to work in all 4 of the browsers
I want to support?

By the way, thanks VERY much for your help with this. I feel like we're
making progress, even if IE6 is not very good right now.

--
Rhino
Jun 27 '08 #9
Candoer wrote:
Thanks for the suggestion! Will take a look at it and see if I can
adopt it. I have a LOT to learn about CSS. Have never tried using
it before. It is hard to teach a 70 year old dog new tricks.
That's like 10 in human years, eh? :-)

C'mon, you're only three years older than me, and I have no problem
using CSS...

--
-bts
-Friends don't let friends drive Windows
Jun 27 '08 #10

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

21
2442
by: Rune Steffensen | last post by:
I've been lurking c.l.p for a while now, and find the amount of messages a bit annoying. To solve this, I suggest the creation of the new group "comp.lang.pyhon.discussions". So when people post questions to c.l.p, they will get all the (more or less) helpfull answers there, but as soon as a discussion arise over an issue, one can Xfut to c.l.p.d. This way, the useful knowledge will not drown in the ocean of subjective opinions. Any...
4
2363
by: Spijon | last post by:
Seems opera can not work normally with javascript, does anyone knows how to fix it? Thanks in advance.
7
1822
by: TheMartian | last post by:
Opera is driving me nuts, I am trying to get it to actually render a table the full width of the browser window sounds easy, but no, Opera and only Opera leaves a 16px margin on the right edge I know its a bug in Opera, but does anyone know of anyway round it? All other current browsers I tested render correctly, and yes that even includes that nasty IE thing
1
1169
by: Ken Kast | last post by:
I have a frameset page with the following code snippets: .. .. .. <script type="text/javascript"> <!-- var bannerFrame; function load () { var bannerDoc = bannerFrame.document;
8
4830
by: Kai-Mikael Jää-Aro | last post by:
AIUI, there are no global style defaults for HTML tags, i e the W3C does not enforce that e g an <H1> should have a specific type-face, size, and so on, but rather this is decided by the browser. Is there any way of finding out what the default style settings of a given browser is?
0
3977
by: U S Contractors Offering Service A Non-profit | last post by:
Brilliant technology helping those most in need Inbox Reply U S Contractors Offering Service A Non-profit show details 10:37 pm (1 hour ago) Brilliant technology helping those most in need Inbox Reply from Craig Somerford <uscos@2barter.net> hide details 10:25 pm (3 minutes ago)
10
2000
by: Christopher Nelson | last post by:
I've been developing a little web page full of JavaScript while using Firefox and it works well but when I try to view it in Opera and IE, it's incomplete. I suspect cross-browser issues in the DOM but how do you *find* them; neither Opera nor IE seem to have a JavaScript console as Firefox does. Am I missing something?
1
4717
by: lolly | last post by:
hi i recently used a virtual keyboard from www.codeproject.com/jscript/jvk.asp. However this part of the code function keyb_callback(ch) { var text = document.getElementById("textfield"), val = text.value; switch(ch) { case "BackSpace":
0
9800
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
0
11180
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
1
10885
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
0
10439
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
0
9597
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
1
7990
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
5817
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
2
4244
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
3
3252
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.