PDA

Click to See Complete Forum and Search --> : Another new site to critique


mpg
03-21-2008, 05:42 AM
I designed www.musicphotographics.com (http://www.musicphotographics.com) myself w/out any prior experience/training, so it's been quite rough & time-consuming to say the least. For starters, I know of the following problems: 1) the text & logo doesn't completely fill all size monitors & browsers; 2) the headings don't center in all monitors & browsers; 3) in Firefox, on the Bands & Musicians pages, the text below the buttons keeps moving.

I also got a free subscription script off of http://www.add2it.com & was wondering if that will work on my godaddy.com server, if it's worth using & what better (hopefully inexpensive) alternatives there are. I'm also not sure how to coordinate the script w/ the HTML. Same problem w/ Search & Comments scripts.

I was thinking of adding my graphic art &/or photos to the right of the text on some of the pages. Is that a good idea? I also plan on adding banners for some sites (like MySpace, YouTube, Jambase & other sites I link to often) under the Subscription form.

Any critiques/suggestions are most welcome & very much appreciated!!! If anything else is needed, like some of the CSS code, fire away!! Thanks!!!!!

shalom_m
03-21-2008, 09:43 AM
Congratulations!!!

For a first attempt, the scope and programming is impressive.
It is also inspiring to see the bits and pieces that you have brought together and to trace the numerous of sites you must have visited to "glean" the required knowlege.

Now let's take it a step at the time, not nescessarily according to importance.

Your logo/banner is 1010px wide, that lets me assume that you are using 1024 x something monitor resolution. Below I have posted the 15 most used monitor resolutions in the last month from one of my .com's


1024x768 - 31.64%,
1280x1024 - 26.68%,
1280x800 - 16.53%,
1920x1200 - 10.27%,
1680x1050 - 3.07%,
1440x900 - 2.95%,
800x600 - 2.36%,
1152x864 - 1.77%,
1280x854 - 1.18%,
1176x664 - 0.94%,
1280x960 - 0.71%,
1400x1050 - 0.47%,
1280x720 - 0.35%,
1600x1200 - 0.35%,
1360x1024 - 0.12% As you can see 1024 is not a standard. Worse still there are still people around who use 800x600 (these will only see 3/4 of your intended width and will have to move left and right to read and navigate)

Those with higher resolutions, (over 60%) will see your site on the left part of the monitor.

Solutions:
Liquid Layout - Pros: It adjusts itself to the resolution of the browser. Cons: To structure the needed CSS in such a way that nothing is out of place is a nightmare but not impossible.
Centering - Pros: It is easy to do. You can utilize the background in either side to enhance the centered text. Cons: If you use 800 as a base, the visitors with a 1600 resolution will have 50% of their useful area blank (serves then right for spending so much money on a monitor).The main menu (menuv) is far too imposing. It draws your eyes away from the text.
Consider:
Reducing in size.
Reducing font size.
Reducing font weight.
Changing color to something nearer the #f5fffa you use as a general background.Still on the subject of the menuv; When it opens a sub-menu, it clashes with the main one. This can be avoided by:
Having a vertical border, similar to your horizontal one.
By changing the background color of your sub-menu.
By creating a horizontal and or vertical offset to the submenu.From what I see in your subscribe form, it is not functioning. Am I correct? If so, PM me and I will pass on some solutions.

Links to other websites.
Do you want to loose your visitors so fast?
When linking to other sites, bear in mind that there is a link function called target="_blank" which opens a new browser window to the linked site.

Most of the subscription scripts should be available for free from your hosting company. If not, PM me.

Thats all for now.

tZ
03-21-2008, 07:43 PM
Your color choices is the main thing that really bothers me. It appears highly amateur. However, the mark-up itself is pretty well done considering this is one of you first attempts. I think it would actually be best to resort to to one or two main colors maybe even one. I think that change along would make this site that much more aesthically pleasing because currently the colors are all over the place and their is little sense of unity between the whole.

bazman
03-21-2008, 11:01 PM
I agree with tZ here. You need to re-evaluate you choice of colours. Your header is also too colour intense and I had trouble understanding what it said.

Maybe google colour relationships in design, this site is good http://www.hypergurl.com/colormatch.php

The information you present on the page is very disconnected. The menu and header create a good frame, but the body text and subscription box seems to be floating.

In Firefox on a mac I get a horizontal scrollbar even though there is no information to the right.

Your coding is very good for a beginner though. Do you come from an IT background?

mpg
03-22-2008, 12:26 AM
I agree with tZ here. You need to re-evaluate you choice of colours. Your header is also too colour intense and I had trouble understanding what it said.

Maybe google colour relationships in design, this site is good http://www.hypergurl.com/colormatch.php

The information you present on the page is very disconnected. The menu and header create a good frame, but the body text and subscription box seems to be floating.

In Firefox on a mac I get a horizontal scrollbar even though there is no information to the right.

Your coding is very good for a beginner though. Do you come from an IT background?
This was the one & only site I have done & will probably ever do. It's going to take months to even finish adding thousands of links & info for the bands & musicians I have on here already, no less the ones I constantly discover. I don't have any IT or coding background at all. I've primarily been an editor, paralegal & admin. assistant after graduating from law school. I just looked up a bunch of tutorial sites & got snippets of info from articles on the web.

I was planning on making the logo easier to read, primarily by eliminating the background of the lettering (I'd forgotten how to do that, but now I know how). As far as the colors, I'm guessing to eliminate the yellow & green in the subscribe form? Change the color of the subheadings, links as well? I read somewhere that the standard colors of the links was blue, purple (hover) & red (vistied). I looked at the hypergurl site & thought the color combo of mustard-yellow & the blue text looked awful. It was recommended to make the menu closer to the background color, so I'll do that.

I also just noticed that even in IE, where there are 3 or fewer buttons on a line in the Bands & Musicians pages, 1 or 2 lines of text appears right next to the 1, 2 or 3 buttons. I gather it wraps when there are more than 3 buttons & pushes all the text to the next line. How do I get the lines of text to align left under the 1, 2 or 3 buttons rather than next to them? I think I tried adding paragraph tags B4 & after the button links but that didn't work. This problem looks much worse than the color combo IMO.

tZ
03-22-2008, 09:11 AM
Thats a lot of content to manage with individual pages. perhaps it would be best to create a content management system using a server side language such as php – if your up to the task. In the "real world" it would be a gigantic waste of time and money to create individual pages due to content changing. What would be done is a base templates would be created then the information would be dropped in based on a query rather than a link to a new page. Essentially, you could have two or three actual pages then handle the content on the page through a information available in the global query array. Its a bit advanced maybe for you but, if you want to take the architecture to the next step that would essentially be it. Than you could create "abstract" pages by giving the body tag an id. The id of the body tag would essentially be how you would change the appearence of each "page" even though in theory there might only be one or two.

Example:

<body id="home">
</body>

<body id="contact">
</body>

<body id="folk">
</body>

Than using CSS you could change the styling via making the body tag the root of your target:

#home {
}

#contact {
}

#folk {
}

So now you are able to change the appearance of each without actually needing to change the page. That is once you implement a system to manage the output of those id's (such as php, asp, etc).

However, another method that is a tad more in-depth but, builds on the previous would be to use classes rather than ids. This would allow you to create a hierarchy of links via using microformating.

Example:

!-- root page -->
<body class="music">
</body>

!-- alternative is a child of music -->
<body class="music alternative">
</body>

!-- folk is a child of music -->
<body class="music folk">
</body>

!-- country is a child of folk -->
<body class="music folk country">
</body>

So now rather than creating individual pages or even individual style sheets all that needs to be done is to target the correct page:

/* default definition for a music page */
body.music {
}

/* default definition "override" for a alternative music page */
body.music.alternative {
}

/* default definition "override for a folk music page */
body.music.folk {
}

/*default definition for a country folk music page */
body.music.folk.country {
}

The only thing you need to be certain of is that you include the element body tag. This is because only one body tag exists in a valid document. Therefore, since class definitions can be used on a variety of elements(unlike ids) this assures you that you only target the body tag if you use the class definition else where such as a paragraph:

<body class="music alternative">
<ul class="music alternative>
</ul>
<p class="music alternative"></p>
</body>

/* paragraph*/
body.music.alternative p.music.alternative {
}

body.music.alternative ul.music.alternative {
}

or once you give the body a class you can be loose with your child elements:

<body class="music alternative">
<ul>
</ul>
<p></p>
</body>

/* paragraphs */
body.music.alternative p {
}

/*ul */
body.music.alternative ul {
}

Therefore, if you have a page that has the exact same structure but, you need to style it differently all it takes is a new class:

<body class="music rock">
<ul>
</ul>
<p></p>
</body>

/* paragraphs */
body.music.rock p {
}

/*ul */
body.music.rock ul {
}

Looking back this might be a but advanced, but generally I find it easier to manage styles and content when I have the relationship between each in the CSS. Just a thought. This is especially true when you need to manage a large amount of content and perspectives(views–"pages") of it. Using this technique you can pretty much create one CSS document that manages everything rather than needing to link to separate ones based on the page which will speed up production and later development changes.

tZ
03-22-2008, 10:47 AM
I guess since, I started my ramble I might as well finish it.

Your banner, navigation and footer are constant throughout the site. Therefore, in "real world" development these would be identified as static elements. Static elements are essentially "concepts" that stay consistent throughout the entirity of the site. Now, there can be exceptions to were these change, but its based on whether or not the content stays consistent throughout most of the site. Becasue of this your banner, navigation and footer are perfect candidates. Therefore, you can create a mark-up structure that reflects this.


<body>
<div class="static" id="masthead"></div> <!-- end of div#masthead -->
<div class="static" id="footer"></div> ><!-- end of div#footer -->
<body>


Now, without taking anything else into regards we have created containers that manage the appearance of the masthead and footer throughout the entire site. These two divs will stay consistent throughout the entire site. However, another thing I noticed about your site is that the layout generally stays consistent. You have essentially a two column grid going. Therefore, you can add this layout in your html.


<body>
<div class="static" id="masthead"></div> <!-- end of div#masthead -->
<div class="static" id="content">
<div class="column left"></div>
<div class="column right"></div>
</div> ><!-- end of div#content -->
<div class="static" id="footer"></div> ><!-- end of div#footer -->
<body>


Here I have inserted a new div #content that will hold all your page specific information. Than as child elements I have added two columns. One is a right column and the other is a left. Now by using CSS you can create a two column grid that effects the entire site:


div#content div.column.left {
float: left;
width: 180px;
}

div#content div.column.right {
margin-left: 180px /* linked to .column.left width */
}


So once those changes are made in the CSS the columns can be controlled regardless of the page. The reason why I used classes rather than id's for the columns are because again – columns are a concept. So now you have the ability to reuse that class to mark-up your site more semantically if you decide to use columns again. You would just be more specific in your CSS target to override the previous styles for the default.

Once you have all that figured out you can place your main navigation ul inside the div.column.right. I'm not going to do that as I'm sure you can figure it out. However, what I would recommend is following the same architecture and naming conventions with the ul. Therefore, it might be best give the ul a class of "static menu main" or something that equally describes the menus function in the site. With those changes (not including the links) your markup should than look something like this.



<body>
<div class="static" id="masthead"></div> <!-- end of div#masthead -->
<div class="static" id="content">
<div class="column left">
<ul class="static menu main">
<!-- appropriate list elements with nested anchors -->
</ul>
</div>
<div class="column right"></div>
</div> ><!-- end of div#content -->
<div class="static" id="footer"></div> ><!-- end of div#footer -->
<body>


I'm not going to get into the steps necessary to populate that list like you have on your site with child uls. However, it would be best to mark-up those uls with classes that relate to the parent. This is a short example:


<ul class="static menu main">
<li><a href="#">music</a>
<ul class="menu music">
<li><a href="alternative"></a></li>
<li><a href="folk"></a></li>
</ul>
</li>
<li><a href="#">misc</a></li>
</ul>


So basically, each nested ul class should relate to the path of the parent list element for a solid semantic and easily manageable list of elements and related page information.

Once you have all that figured out than all you need to do is implement a content managing system that changes what is placed in the div.column.left. The easiest way to do this would be to a create a server side document with switch statements. Basically, you would need to include a php document that handles this information.


<body>
<div class="static" id="masthead"></div> <!-- end of div#masthead -->
<div class="static" id="content">
<div class="column left">
<ul class="static menu main">
<!-- appropriate list elements with nested anchors -->
</ul>
</div>
<div class="column right">
<?php include("handler.php"); ?>
</div>
</div> ><!-- end of div#content -->
<div class="static" id="footer"></div> ><!-- end of div#footer -->
<body>


That line of code would link to a php document that you could than handle what information goes into that "frame" – div. Now, rather than needing 10+ html pages you can handle everything with three doucments:

index.php (html page with php include )
handle.php (php document )
presentation.css (CSS document that manages styles and skins )

So he last thing I'm going to show you is a brief introduction to hooking this all up with php.

The first thing you need to know is that the only information accessible to php is within something called a query string. A query string is formated like so:


<a href="index.php?pg=music">music</a>


Now, when that page is sent that information can be extracted in the global $_GET array. The global $_GET array holds all queries that were sent to the page. Therefore, you can send as many queries(pretty much) as you like in a query by separating them with amperstands like so:


<a href="index.php?pg=music&sub=alternative">music</a>


Therefore, going back to our previous example an appropriate way to handle your links using php would by using the following format:



<ul class="static menu main">
<li><a href="<?php echo $_SERVER['PHP_SELF']; ?>?pg=music">music</a>
<ul class="menu music">
<li><a href="<?php echo $_SERVER['PHP_SELF']; ?>?pg=music&sub=alternative">alternative</a></li>
<li><a href="<?php echo $_SERVER['PHP_SELF']; ?>?pg=music&sub=folk">folk</a></li>
</ul>
</li>
<li><a href="<?php echo $_SERVER['PHP_SELF']; ?>?pg=misc">misc</a></li>
</ul>


Now when a link is clicked the current page is reloaded and the queries within the href of the clicked link are available in the $_GET global array. Those queries can be extracted like so:

$_GET["pg"]

That would reference the pg value. Therefore, if the user clicks the music link the value of the above would be "music". However, if they click the misc link than it would be "misc". So now you have access to the "page" the user would like to go which is how you would determine the information presented in the right column via the handler.php include. Even though the page essentially stays the same the content within the right.column will change. This changing content therefore is dynamic. The content does not stay the same but, changes based on the "page" the user is on. This is unlike the masthead, footer and overall layout. They all stay consistent throughout the entire site.

Now, lastly to actually control output based on the information available in the $_GET global array you need a control structure. The most basic of control structures is the if statement:

if(this) than do this;

So for example:
if(isset($_GET['pg'])) {
// do something
}

The isset() function introduced checks whether or not the 'pg' index is available within the $_GET global array. If you were to just say: if($_GET['pg']) an error would be thrown if their wasn't a pg query. Therefore, you use isset() to check whether it is available before trying to access it.

Now, the first time a user enetrs the site the pg Query is not going to be avialable. Therefore, you should use an if else statement:


if(isset($_GET['pg'])) {
switch($_GET['pg']) {
case 'music':
echo 'music page';
break;
case 'misc':
echo 'misc page';
default:
echo 'your at my home page';
}
} else {
echo 'your at my home page';
}


There's alot more to get into. However, thats pretty much the basics if you(or anyone else) feels like expanding on it. Normally, I personally, wouldn't handle the output using such a primitive switch method. However, I'm quit sure that my method would be to complex and mind numing to explain so I used the most basic switch statement instead.

* notice: there may be some discrepincies in my code, but in order to get all this work you would need to research a bit further anyway.My explaination here is just a conceptual overview of the necessary steps to take in order to implement a more solid and manageable structure throughout the entirety of the site. By no means is it the exact implementation you should use – just a conceptual outline.

bazman
03-22-2008, 01:46 PM
I also just noticed that even in IE, where there are 3 or fewer buttons on a line in the Bands & Musicians pages, 1 or 2 lines of text appears right next to the 1, 2 or 3 buttons. I gather it wraps when there are more than 3 buttons & pushes all the text to the next line. How do I get the lines of text to align left under the 1, 2 or 3 buttons rather than next to them? I think I tried adding paragraph tags B4 & after the button links but that didn't work. This problem looks much worse than the color combo IMO.
A quick fix would be to enclose the buttons in a div tag.

<h3>Abp Ikwunga</h3>
<div>
<a href="http://www.myspace.com/ikwunga" class="a myspace">MySpace</a>
<a href="http://www.rebisihut.com/" class="a homepage">Home Page</a>
<a href="http://CDBaby.com/cd/ikwunga" class="a cdbaby">CD Baby</a>
</div>
<p class="p5">vocal</p>
<p class="p5">Bands: Mr. Something Something</p>

shalom_m
03-22-2008, 05:10 PM
Hold your horses tJZ and bazman.
Remember:
I don't have any IT or coding background at all. I've primarily been an editor, paralegal & admin. assistant after graduating from law school. I just looked up a bunch of tutorial sites & got snippets of info from articles on the web.
Lets start with the basics of SSI (Server Side Includes).

mpg,
First you have to check if your server allowes SSI. Check if there is a file called .htaccess in your root www directory. If there is, open it and check if the following lines are there:

AddType text/html .shtml
AddHandler server-parsed .shtml

If not; create such a file and save to your www root dir.

To check if it works create a file called test.shtml and paste the following into that page:
<!--#echo var="DATE_LOCAL" -->
and save to root directory.

Then, in one of your existing files place the following call:

<!--#include virtual="test.shtml" -->
NB: Make sure there is an empty space between the .shtml" and the -->

Upload and test.

You should now be able to see todays date in the place where you embedded the include call.

If all this works, you have SSI ability on your server. If not, call your hosting company.

Assuming all worked well; and you have SSI.
In one if your files, cut the section starting with:
<div id="menuv">
<ul>

till

</ul>
</div>

i.e. the whole menu section and paste it into a new file. Call it MENUV.shtml

In the space between

<div id="menuv-container">

and

<div>

place the following line:

<!--#include virtual="MENUV.shtml" -->
Save, upload and test.
If all works well, repeat in all files.

From now on, all changes made in the MENUV.shtml file will be seen in all your pages.

Suggestions for other SSI files on your site:

The Header
The Subscription Routine
Possible Footer (not written yet)

mpg
03-23-2008, 03:49 AM
Thanx a million!! All those latest suggestions were things I wanted to do when I 1st set out the CSS structure but didn't know how to do at that point in my knowledge of this stuff. I intiailly was going to have separate CSS's for the various different formats of pages. Then I discovered classes & id's & found that wasn't necessary, but I still didn't have the more advanced knowledge presented above to implement them properly.

I'm going to get to all this stuff tomorrow afternoon. I still have to conceptualize the suggestions better, but I think I can grasp it by going over it a couple of times. Thanks again!!

mpg
03-24-2008, 06:23 PM
I changed the colors of the subheading & subscribe form, added menu borders & decreased its size, & added the target/blank to the links. Tonight I'll deal w/ the logo & subscribe form.

Despite adding <div> tags around the buttons on the Musicians pages as suggested, I still have problems w/ text appearing on the same lines as buttons (instead of aligning flush left w/ the rest of the text) on a wider rectangular screen in IE & on a square monitor in Firefox. Nothing I've tried fixes it.

bazman
03-24-2008, 07:01 PM
The only other thing I can think of is to create a 'clearit' div under the buttons that are affected.


<div class=" clearit"></div>


CSS Code
.clearit {
clear: both;
}
I am sure some designers will be spitting at me for suggesting it, but it will solve your problem.

shalom_m
03-24-2008, 08:01 PM
I like what you have done so-far.

The menu looks much better.

Consider however to change:
background-color: #800080; (hover)
background-color: red; (visited)
to colors nearer to the light-blue you are using on the menu.

Further, on the CSS of menuv, try replacing your present #menuv li ul with:
#menuv li ul
{
position: absolute;
top: .8em;
left: 19.2em;
display: none;
border-left: .09em solid #FFFF00;
z-index: 2;
} I think it looks a lottle more professional.
WARNING: I have only tested the above with FF and there it works well.

You still have a problem of "moving text", e.g. Bands pages.
I think that a <br> after the links and before the <p>'s will solve the problem.

<a href="http://www.myspace.com/iiirdtymeout2" class="a myspace" target="_blank">MySpace</a>
<a href="http://www.iiirdtymeout.com/" class="a homepage" target="_blank">Home Page</a>
<a href="http://www.youtube.com/watch?v=RY4wyIhY2VY" class="a youtube" target="_blank">YouTube</a>
<a href="http://www.musicianguide.com/biographies/1608003534/IIIrd-Tyme-Out.html" class="a cduniverse_answers" target="_blank">Musician Guide</a>
<br>
<p class="p5">Seven consecutive International Bluegrass Music Association Vocal Group of the Year awards.</p>
If not, place the link buttons in a seperate container.

mpg
03-24-2008, 09:41 PM
Consider however to change: background-color: #800080; (hover)
background-color: red; (visited)

to colors nearer to the light-blue you are using on the menu.

Further, on the CSS of menuv, try replacing your present #menuv li ul with:
I think it looks a lottle more professional.

You still have a problem of "moving text", e.g. Bands pages.
I think that a <br> after the links and before the <p>'s will solve the problem.

Yeah, I was thinking the hover & viewed colors on the menu were too bright compared to the new base color, which actually looks pretty close to the text color. I forgot that the <br> tag after the buttons worked (I did that late last night), but I thought <br> tags were kinda frowned upon.

What does the change in #menuv li ul do? I don't have access to the files at work.

shalom_m
03-24-2008, 10:34 PM
top: .8em;
Will push the sub-menu down .8em. So that it is a little offside vertically from the parent line.
left: 19.2em;
Your parent menu was 20, so this will push the submenu .8em to the left, over the parent menu (giving a cascade effect)
display: none;
border-left: .09em solid #FFFF00;
Puts a yellow border on the left (estetics)
z-index: 2;
Puts the submenu on a higher level to the parent (3DEffect)

shalom_m
03-25-2008, 02:25 AM
.......but I thought <br> tags were kinda frowned upon.

If it works, and it is not illegal or immoral - USE IT!!

I have been around computers for near on 4 decades (I wrote my first program in 1969 - on an IBM mainframe in PL/1). In all that time I met a lot of people who looked at either the hardware or the programming language as a kind of extention to religion and theology. Well it is not!

I have seen intelligent people sacrificing their imagination in the altars of PL/1, PL/2 Fortran, Pascal, Logo, Basic, C, C++, IMB's, Ataris, Commodores and many others .

Programming languages and hardware are tools that serve your creativity - and should be used as such.

But if you are worried use instead of <br> use <br />